SpringBoot简单集成Shiro登录授权

今天,我们来做一个简单的shiro授权功能,此篇接着上次的登录验证为前提往下讲解,请先了解了shrio的基本组件,再观看本文更佳,上集地址:https://www.cnblogs.com/keke26/p/12841961.html

pom依赖包和相关日志文件我们在上篇已经讲解过,此处略

 

这次, 我们只需要在UserRealm类中,添加授权功能即可

 1  //授权
 2     @Override
 3     protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
 4         System.out.println("执行了授权");
 5         
 6         //new 一个简单的授权工具,用来给当前用户验证授权
 7         SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
 8 
 9         //subject获取当前的用户对象
10         Subject subject = SecurityUtils.getSubject();
11         User currentUser= (User) subject.getPrincipal();
12 
13         //将用户的Perms(授予的权限)添加到组件中,后续验证使用
14         info.addStringPermission(currentUser.getPerms());
15 
16         return info;
17     }

接下来,我们只需要在shrioConfig中配置一下shiroFactoryBean 即可完成!

 1  //shiroFilterFactoryBean
 2     @Bean                                                      //此处Qualifier绑定的是getDefaultSecurityManager这个bean对象
 3     public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager") DefaultWebSecurityManager defaultWebSecurityManager){
 4         //前两步固定套路,工厂模式创建一个shiroFilterFactoryBean,然后将下面的defaultWebSecurityManager设置进来
 5         ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();
 6         bean.setSecurityManager(defaultWebSecurityManager);
 7 
 8          //authc:所有url都必须认证通过才可以访问; anon:所有url都都可以匿名访问
 9         Map<String, String> filterMap = new LinkedHashMap<>();
10         
11         //在上次讲解的基础上,将此处需要权限,以及需要什么perms权限的网址添加进来,即可完成授权验证!
12         //注意此处的页面路劲不是网页名称,而是MVC中的方法
13         filterMap.put("/main","perms[user:add]");
14         //拦截所有vip请求的操作
15         filterMap.put("/vip/**","perms[user:add]");
16         bean.setFilterChainDefinitionMap(filterMap);
17 
18         //设置登录返回路径
19         bean.setLoginUrl("/index");
20 
21         //设置账户权限不足时返回路径
22         bean.setUnauthorizedUrl("/unknow");
23 
24 
25         return bean;
26     }

关于perms,个人理解为只需要在数据库中,给需要授权的用户,添加一行属性perms,其中可自行定义授权状态,比如我现在的user:add 即为授权状态,意思为只有perms属性为user:add才可以进入此网址

以下是我的用户数据库

 

至此,我们就完成了shrio的授权验证功能

 

posted @ 2020-05-14 11:01  科科大爆炸  阅读(201)  评论(0编辑  收藏  举报