`

因为眼花而引发的悲剧 -- Spring 整合Shiro框架中注入RolePermissionResolver到AuthorizingRealm

阅读更多

因为眼花而引发的悲剧 -- Shiro框架中注入RolePermissionResolver到AuthorizingRealm

 

使用shiro安全框架,自定义了一个Realm:

public class UserRealm extends AuthorizingRealm

 

AuthorizingRealm详细类型是:

public abstract class AuthorizingRealm extends AuthenticatingRealm

implements Authorizer, Initializable, PermissionResolverAware, RolePermissionResolverAware

 

另外,自定义了一个RolePermissionResolver如下:

public class MyRolePermissionResolver implements RolePermissionResolver

该RolePermissionResolver用于将角色字符串转换成该角色所包含的Permission的集合.

 

上面AuthenticatingRealm 中实现的RolePermissionResolverAware接口为:

 

public interface RolePermissionResolverAware {

    /**
     * Sets the specified <tt>RolePermissionResolver</tt> on this instance.
     *
     * @param rpr the <tt>RolePermissionResolver</tt> being set.
     */
    public void setRolePermissionResolver(RolePermissionResolver rpr);
}

 

 

注意这里的set方法,是setRolePermissionResolver

 

而AuthorizingRealm类中,却使用

 

private RolePermissionResolver permissionRoleResolver;

 

这个字段来保存这个set进来的RolePermissionResolver,

 

方法如下:

public void setRolePermissionResolver(RolePermissionResolver permissionRoleResolver) {
        this.permissionRoleResolver = permissionRoleResolver;
    }

 

 

    

 在配置spring注入的时候,想当然的使用

 <bean id="userRealm" class="com.jack_yin.mainframe.authorize.authentic.realm.UserRealm" >

    <!-- ...... -->

    <property name="permissionRoleResolver" ref="myRolePermissionResolver"/>

 </bean>

 

 (这里这么注入是因为之前还注入了private PermissionResolver permissionResolver; 这个字段是正常的和它的setter配套,

 并且shiro源码中,这个字段就和permissionRoleResolver放一起啊,太迷惑人了吧:

 

 

 

 导致各种异常报错,而且spring异常信息乱指,指向了自己实现的一个连接池,于是一阵折腾啊.

 最后发现连接池没问题啊,早上一来发现这个field和setter不配套啊,话说shiro中为什么要这样啊....

 这个问题折腾了整整一天加一个晚上啊....

 

 最后,修改了property 的name解决问题啊:

 <bean id="userRealm" class="com.jack_yin.mainframe.authorize.authentic.realm.UserRealm" >

    <!-- ...... -->

    <property name="rolePermissionResolver" ref="myRolePermissionResolver"/>

 </bean>

 

 泪奔,吐血中......

 

  • 大小: 12.7 KB
  • 大小: 14.4 KB
0
0
分享到:
评论
1 楼 happyle 2014-12-29  
同感啊.....

相关推荐

    spring整合shiro

    Spring 提供了强大的依赖注入和面向切面编程能力,而Shiro则以其轻量级、易用性在权限管理领域受到青睐。下面将详细介绍这个登录例子中的关键知识点。 1. **Apache Shiro**: - **核心概念**:Shiro 包括认证...

    springboot-shiro

    而Apache Shiro则是一款强大的安全框架,能够很好地处理认证、授权等问题。本文将深入探讨如何利用SpringBoot和Shiro搭建一个基于数据库的细粒度动态权限管理系统。 首先,SpringBoot是Spring框架的简化版,它集成...

    spring-mybatis-redis-shiro框架-最原始版本可直接拿来用的

    标题中的"spring-mybatis-redis-shiro框架"指的是一个基于Spring Boot、MyBatis、Redis和Shiro构建的完整Web应用框架。这个框架提供了一种快速开发的方式,可以帮助开发者节省时间,尤其是对于需要构建安全控制和...

    Spring-SpringMVC-MyBatis-Shiro整合

    在IT行业中,Spring框架是Java企业级应用开发的首选,它提供了一个全面的编程和配置模型,用于简化应用程序开发。SpringMVC是Spring框架的一部分,专门处理Web应用程序的请求和响应。MyBatis是一个轻量级的持久层...

    SpringMVC-Mybatis-Shiro-redis-master

    【标题】"SpringMVC-Mybatis-Shiro-redis-master" 涉及的是一个集成框架项目,这个项目集成了四个关键的技术组件:SpringMVC、MyBatis、Shiro和Redis。这些技术在现代Java Web开发中扮演着重要角色。 **SpringMVC**...

    Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统

    报表前端采用Bootstrap框架,结合Jquery Ajax,整合前端Layer.js(提供弹窗)+Bootstrap-table(数据列表展示)+ Bootstrap-Export(各种报表导出SQL,Excel,pdf等)框架,整合Echars,各类图表的展示(折线图,饼图...

    Spring MVC整合shiro

    - 引入依赖:在项目中引入Shiro的相关JAR包,通常包括`shiro-core`、`shiro-spring`等。 - 配置Shiro:创建Shiro配置文件,如`shiro.ini`,定义用户、角色、权限的关系。 - 创建安全管理器:在Spring配置文件中...

    spring整合shiro登录小例子

    这个"spring整合shiro登录小例子"提供了一个简化的实例,展示了如何在 Spring 框架中集成 Shiro 进行用户登录验证和权限控制。下面我们将深入探讨相关的知识点。 **1. Spring 框架** Spring 是一个广泛使用的 Java ...

    Spring框架中整合Shiro

    在Java Web开发中,Spring框架以其强大的依赖注入和面向切面编程能力,成为了企业级应用的首选。然而,对于安全控制,Spring本身虽然提供了一定的支持,但并未深入到细粒度的身份验证和授权管理。这时,Apache Shiro...

    shiro-redisson基于Redis的ShiroCache和Session实现

    在 `shiro-redisson` 中,通过 Redisson 将这些信息存储在 Redis 中,使得在分布式系统中,不同节点可以共享相同的缓存数据,提升了系统性能。 3. **Shiro 会话(Session)管理** Shiro 的会话管理允许跨多个请求...

    mybatisplus-spring-boot_mybatis-plus整合_shiro_plus_

    5. 整合 Shiro 和 Spring Boot:将 Shiro 的 Filter 注册到 Spring Boot 的 Filter Chain 中,使 Shiro 能够处理请求。 6. 开发 Controller 层,定义 RESTful API 接口,根据业务需求调用 Service 层的方法。 7. ...

    Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统.rar

    shiro作为安全框架,主流技术 几乎零XML,极简配置 两套UI实现(bootstrap+layer ui),可以自由切换 报表后端采用技术: SpringBoot整合SSM(Spring+Mybatis-plus+ SpringMvc),spring security 全注解式的权限管理和...

    spring cloud + shiro集成方案

    手把手教你集成spring cloud + shiro微服务框架;用最少的工作量,改造基于shiro安全框架的微服务项目,实现spring cloud + shiro 框架集成。博客地址:...

    spring shiro整合

    在Spring应用中整合Shiro,可以利用Spring的依赖注入特性,将Shiro的相关组件如SecurityManager、Realm等注入到Spring容器中,方便管理和配置。 1. **认证**:Shiro提供了Subject接口,它是用户与系统交互的接口,...

    采用SpringBoot2.0、MyBatis-Plus、Shiro框架,开发的一套权限系统.zip

    采用SpringBoot2.0、MyBatis-Plus、Shiro框架,开发的一套权限系统 采用SpringBoot2.0、MyBatis-Plus、Shiro框架,开发的一套权限系统 采用SpringBoot2.0、MyBatis-Plus、Shiro框架,开发的一套权限系统 采用...

    高版本AES-GCM模式加密的Shiro漏洞利用1

    高版本AES-GCM模式加密的Shiro漏洞利用1 ...高版本AES-GCM模式加密的Shiro漏洞利用1是指高版本Shiro中出现的漏洞利用问题,原因是Shiro框架中加密算法的变化,导致之前的exp不能用于新版Shiro的加密解密调用。

    springMVC整合shiro框架

    SpringMVC 和 Shiro 框架的整合是企业级Web开发中常见的一种安全控制解决方案。SpringMVC 是一个强大的MVC(Model-View-Controller)框架,负责处理请求、展示视图以及业务逻辑;而 Apache Shiro 则是一个轻量级的...

    spring-boot-shiro-redis整合源码

    spring-boot-shiro-redis 整合源码

    shiro-jar.zip

    shiro-crypto-hash-1.7.1.jar,shiro-ehcache-1.7.1.jar,shiro-event-1.7.1.jar,shiro-guice-1.7.1.jar,shiro-hazelcast-1.7.1.jar,shiro-lang-1.7.1.jar,shiro-quartz-1.7.1.jar,shiro-spring-1.7.1.jar,shiro-web-...

Global site tag (gtag.js) - Google Analytics