因为眼花而引发的悲剧 -- 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>
泪奔,吐血中......
相关推荐
Spring 提供了强大的依赖注入和面向切面编程能力,而Shiro则以其轻量级、易用性在权限管理领域受到青睐。下面将详细介绍这个登录例子中的关键知识点。 1. **Apache Shiro**: - **核心概念**:Shiro 包括认证...
而Apache Shiro则是一款强大的安全框架,能够很好地处理认证、授权等问题。本文将深入探讨如何利用SpringBoot和Shiro搭建一个基于数据库的细粒度动态权限管理系统。 首先,SpringBoot是Spring框架的简化版,它集成...
标题中的"spring-mybatis-redis-shiro框架"指的是一个基于Spring Boot、MyBatis、Redis和Shiro构建的完整Web应用框架。这个框架提供了一种快速开发的方式,可以帮助开发者节省时间,尤其是对于需要构建安全控制和...
在IT行业中,Spring框架是Java企业级应用开发的首选,它提供了一个全面的编程和配置模型,用于简化应用程序开发。SpringMVC是Spring框架的一部分,专门处理Web应用程序的请求和响应。MyBatis是一个轻量级的持久层...
【标题】"SpringMVC-Mybatis-Shiro-redis-master" 涉及的是一个集成框架项目,这个项目集成了四个关键的技术组件:SpringMVC、MyBatis、Shiro和Redis。这些技术在现代Java Web开发中扮演着重要角色。 **SpringMVC**...
报表前端采用Bootstrap框架,结合Jquery Ajax,整合前端Layer.js(提供弹窗)+Bootstrap-table(数据列表展示)+ Bootstrap-Export(各种报表导出SQL,Excel,pdf等)框架,整合Echars,各类图表的展示(折线图,饼图...
- 引入依赖:在项目中引入Shiro的相关JAR包,通常包括`shiro-core`、`shiro-spring`等。 - 配置Shiro:创建Shiro配置文件,如`shiro.ini`,定义用户、角色、权限的关系。 - 创建安全管理器:在Spring配置文件中...
这个"spring整合shiro登录小例子"提供了一个简化的实例,展示了如何在 Spring 框架中集成 Shiro 进行用户登录验证和权限控制。下面我们将深入探讨相关的知识点。 **1. Spring 框架** Spring 是一个广泛使用的 Java ...
在 `shiro-redisson` 中,通过 Redisson 将这些信息存储在 Redis 中,使得在分布式系统中,不同节点可以共享相同的缓存数据,提升了系统性能。 3. **Shiro 会话(Session)管理** Shiro 的会话管理允许跨多个请求...
在Java Web开发中,Spring框架以其强大的依赖注入和面向切面编程能力,成为了企业级应用的首选。然而,对于安全控制,Spring本身虽然提供了一定的支持,但并未深入到细粒度的身份验证和授权管理。这时,Apache Shiro...
5. 整合 Shiro 和 Spring Boot:将 Shiro 的 Filter 注册到 Spring Boot 的 Filter Chain 中,使 Shiro 能够处理请求。 6. 开发 Controller 层,定义 RESTful API 接口,根据业务需求调用 Service 层的方法。 7. ...
shiro作为安全框架,主流技术 几乎零XML,极简配置 两套UI实现(bootstrap+layer ui),可以自由切换 报表后端采用技术: SpringBoot整合SSM(Spring+Mybatis-plus+ SpringMvc),spring security 全注解式的权限管理和...
手把手教你集成spring cloud + shiro微服务框架;用最少的工作量,改造基于shiro安全框架的微服务项目,实现spring cloud + shiro 框架集成。博客地址:...
在Spring应用中整合Shiro,可以利用Spring的依赖注入特性,将Shiro的相关组件如SecurityManager、Realm等注入到Spring容器中,方便管理和配置。 1. **认证**:Shiro提供了Subject接口,它是用户与系统交互的接口,...
采用SpringBoot2.0、MyBatis-Plus、Shiro框架,开发的一套权限系统 采用SpringBoot2.0、MyBatis-Plus、Shiro框架,开发的一套权限系统 采用SpringBoot2.0、MyBatis-Plus、Shiro框架,开发的一套权限系统 采用...
高版本AES-GCM模式加密的Shiro漏洞利用1 ...高版本AES-GCM模式加密的Shiro漏洞利用1是指高版本Shiro中出现的漏洞利用问题,原因是Shiro框架中加密算法的变化,导致之前的exp不能用于新版Shiro的加密解密调用。
SpringMVC 和 Shiro 框架的整合是企业级Web开发中常见的一种安全控制解决方案。SpringMVC 是一个强大的MVC(Model-View-Controller)框架,负责处理请求、展示视图以及业务逻辑;而 Apache Shiro 则是一个轻量级的...
spring-boot-shiro-redis 整合源码
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-...