Spring整合Shiro安全框架 ##

----------

### **Shiro框架的配置**

​    

    1. 导入jar包,如果使用了Maven,引入坐标即可(项目配置文件中已经引入)
    2. 配置Spring整合Shiro的核心过滤器,核心filter,一个filter相当于10个filter
        * 代码如下
            <!-- Shiro Security filter  filter-name这个名字的值将来还会在spring中用到  -->
            <filter>
                <filter-name>shiroFilter</filter-name>
                <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
                <init-param>
                    <param-name>targetFilterLifecycle</param-name>
                    <param-value>true</param-value>
                </init-param>
            </filter>
            <filter-mapping>
                <filter-name>shiroFilter</filter-name>
                <url-pattern>/*</url-pattern>
            </filter-mapping>
    
    3. Spring整合Shiro框架,需要配置
        * 创建applicationContext-shiro.xml的配置文件,引入约束
        * 在applicationContext配置文件引入<import resource="classpath:spring/applicationContext-shiro.xml"></import>
    
    4. 配置DelegatingFilterProxy过滤器,通过shiroFilter名称去IOC的容器中查找对象,配置该对象(配置具体的规则)
        <!-- filter-name这个名字的值来自于web.xml中filter的名字 -->
        <bean >,判断认证通过后的用户,是否拥有系统首页的权限?如果该用户拥有系统首页权限,把标签中间的内容显示到页面上。

  3.打开AuthRealm类,完成授权的方法编写,具体的代码如下
        /**
         * 授权
         */
        protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection pc) {
            // 从AuthenticationInfo中获取到用户对象
            User user = (User) pc.fromRealm(this.getName()).iterator().next();
            List<String> list = new ArrayList<String>();
            // 继续操作,通过对象导航的方式,获取到该用户下的角色,具有哪些权限
            Set<Role> roles = user.getRoles();
            // 遍历,获取到每一个角色对象
            for (Role role : roles) {
                // 通过角色对象获取到该角色具有的权限
                Set<Module> modules = role.getModules();
                for (Module module : modules) {
                    list.add(module.getName());
                }
            }

     //这个SimpleAuthorizationInfo 对象封装的是授权信息,以后要判断某个方法或者按钮是否拥有权限,只需要用spring提供的对应标签即可(Permissions)
            SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();    
            info.addStringPermissions(list);
            return info;               
        }

 

注意:此随笔是本人在网上借鉴某某机构所得。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-05-29
  • 2022-03-02
  • 2022-12-23
  • 2021-10-22
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-08-19
  • 2021-10-08
  • 2022-12-23
  • 2022-12-23
  • 2021-11-18
相关资源
相似解决方案