这篇文章主要介绍了SpringBoot Shiro授权实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
使用Shiro过滤器实现授权
设置好授权拦截跳转的请求地址
@Bean
public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager") DefaultWebSecurityManager securityManager) {
ShiroFilterFactoryBean shiroFilterFactoryBean=new ShiroFilterFactoryBean();
//设置安全管理器
shiroFilterFactoryBean.setSecurityManager(securityManager);
//添加Shiro内置过滤器
Map filterMap= new linkedHashMap();
//设置拦截后跳转的请求路径
shiroFilterFactoryBean.setLoginUrl("/user/badRequest");
//设置未授权提示的页面
shiroFilterFactoryBean.setUnauthorizedUrl("/user/badRequest");
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterMap);
return shiroFilterFactoryBean;
}
再使用 filterMap 去放对应的拦截即可,例如 filterMap.put(" @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) { System.out.println("开始执行Shiro的授权方法..."); //给资源进行授权 SimpleAuthorizationInfo info= new SimpleAuthorizationInfo(); //添加资源的授权字符串 info.addStringPermission("user:add"); return null; }
授权字符串和之前的字符串对应
补充
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken arg0) throws AuthenticationException {
System.out.println("开始执行Shiro的认证方法...");
//编写Shiro判断逻辑,判断用户名和密码
//判断用户名是否存在
UsernamePasswordToken token=(UsernamePasswordToken)arg0;
User user = userMapper.findByUsername(token.getUsername());
if(user==null)
return null;
//判断密码是否正确,参数一为认证的实体
return new SimpleAuthenticationInfo(user,user.getPassword(),"");
}
在执行认证时的SimpleAuthenticationInfo第一个传参可以用来获取当前用户
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) {
System.out.println("开始执行Shiro的授权方法...");
//给资源进行授权
SimpleAuthorizationInfo info= new SimpleAuthorizationInfo();
//添加资源的授权字符串
info.addStringPermission("user:register");
//获取当前的登录用户
User user=(User)SecurityUtils.getSubject().getPrincipal();
return null;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



