SpringBoot Shiro授权实现过程解析
这篇文章主要介绍了SpringBootShiro授权实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
使用Shiro过滤器实现授权
设置好授权拦截跳转的请求地址
/**
*创建ShiroFilterFactoryBean
*/
@Bean
publicShiroFilterFactoryBeangetShiroFilterFactoryBean(@Qualifier("securityManager")DefaultWebSecurityManagersecurityManager){
ShiroFilterFactoryBeanshiroFilterFactoryBean=newShiroFilterFactoryBean();
//设置安全管理器
shiroFilterFactoryBean.setSecurityManager(securityManager);
//添加Shiro内置过滤器
/**
*Shiro内置过滤器,可以实现权限相关的拦截器
*常用的过滤器:
*anon:无需认证(登录)可以访问
*authc:必须认证才可以访问
*user:如果使用rememberMe的功能可以直接访问
*perms:该资源必须得到资源权限才可以访问
*role:该资源必须得到角色权限才可以访问
*/
MapfilterMap=newLinkedHashMap();
//设置拦截后跳转的请求路径
shiroFilterFactoryBean.setLoginUrl("/user/badRequest");
//设置未授权提示的页面
shiroFilterFactoryBean.setUnauthorizedUrl("/user/badRequest");
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterMap);
returnshiroFilterFactoryBean;
}
再使用filterMap去放对应的拦截即可,例如filterMap.put("/**","anon")
上面是认证的,如果需要授权的,相应的多给一个任意的授权字符串如filterMap.put("/user/add","perms[user:add]")
授权逻辑编写的位置
/**
*执行授权逻辑
*/
@Override
protectedAuthorizationInfodoGetAuthorizationInfo(PrincipalCollectionarg0){
System.out.println("开始执行Shiro的授权方法...");
//给资源进行授权
SimpleAuthorizationInfoinfo=newSimpleAuthorizationInfo();
//添加资源的授权字符串
info.addStringPermission("user:add");
returnnull;
}
授权字符串和之前的字符串对应
补充
/**
*执行认证逻辑
*/
@Override
protectedAuthenticationInfodoGetAuthenticationInfo(AuthenticationTokenarg0)throwsAuthenticationException{
System.out.println("开始执行Shiro的认证方法...");
//编写Shiro判断逻辑,判断用户名和密码
//判断用户名是否存在
UsernamePasswordTokentoken=(UsernamePasswordToken)arg0;
Useruser=userMapper.findByUsername(token.getUsername());
if(user==null)
returnnull;
//判断密码是否正确,参数一为认证的实体
returnnewSimpleAuthenticationInfo(user,user.getPassword(),"");
}
在执行认证时的SimpleAuthenticationInfo第一个传参可以用来获取当前用户
/**
*执行授权逻辑
*/
@Override
protectedAuthorizationInfodoGetAuthorizationInfo(PrincipalCollectionarg0){
System.out.println("开始执行Shiro的授权方法...");
//给资源进行授权
SimpleAuthorizationInfoinfo=newSimpleAuthorizationInfo();
//添加资源的授权字符串
info.addStringPermission("user:register");
//获取当前的登录用户
Useruser=(User)SecurityUtils.getSubject().getPrincipal();
returnnull;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短