zoukankan      html  css  js  c++  java
  • 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的授权验证功能

  • 相关阅读:
    linux 下内存检查工具 valgrind 及 sanitizer 编译选项及静态检查工具
    jQuery中 inArray
    CLEAN crxMouse Gestures 插件被标记为不安全
    如何理解DMZ?
    如何完整备份浏览器数据(Chrome、Firefox)
    Windows 分屏工具
    JS监听H5返回
    华为账号安全性怎么样?
    IOS Safari keyup不生效如何解决?
    如何下载JD图片 不带logo图片?
  • 原文地址:https://www.cnblogs.com/keke26/p/12887195.html
Copyright © 2011-2022 走看看