因为眼花而引发的悲剧 -- 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-mybatis-redis-shiro框架-最原始版本可直接拿来用的
报表前端采用Bootstrap框架,结合Jquery Ajax,整合前端Layer.js(提供弹窗)+Bootstrap-table(数据列表展示)+ Bootstrap-Export(各种报表导出SQL,Excel,pdf等)框架,整合Echars,各类图表的展示(折线图,饼图...
管理系统系列-- AdminLTE+Spring+Shiro开发的后台管理系统、权限管理系统
使用SpringBoot与shiro实现基于数据库的细粒度动态权限管理系统实例。
spring整合shiro框架,一步步教你完成整合
SpringMVC-Mybatis-Shiro-redis-master..............
采用SpringBoot2.0、MyBatis-Plus、Shiro框架,开发的一套权限系统 采用SpringBoot2.0、MyBatis-Plus、Shiro框架,开发的一套权限系统 采用SpringBoot2.0、MyBatis-Plus、Shiro框架,开发的一套权限系统 采用...
spring-boot-shiro-redis 整合源码
shiro作为安全框架,主流技术 几乎零XML,极简配置 两套UI实现(bootstrap+layer ui),可以自由切换 报表后端采用技术: SpringBoot整合SSM(Spring+Mybatis-plus+ SpringMvc),spring security 全注解式的权限管理和...
shiro-redisson 是一个 Apache Shiro 的扩展组件,提供了基于 redis 实现的缓存和会话,以支持分布式环境下的应用。底层使用了 redisson 作为 redis 客户端。
手把手教你集成spring cloud + shiro微服务框架;用最少的工作量,改造基于shiro安全框架的微服务项目,实现spring cloud + shiro 框架集成。博客地址:...
整合mybatis-spring-boot-2.0-shiro-thymeleaf 简短的小demo,适合初学者
springboot+vue+shiro 前后盾分离,权限整合,vue路由配置解析,有sql语句,shiro 权限验证。
mybatis-plus shiro spring mybatis整合
Spring框架中整合Shiro,实现auth身份识别,鉴权管理功能。
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-...
java运行依赖jar包
Spring Shiro 学习系统 Spring-Shiro-training,适合初学者。
Shiro框架,实现用户管理和权限控制,主要内容如下: 1.登录(带验证码),包括“记住我”的功能; 2.加密,存储的密码不采用明文,初始密码123; 3.session管理:使用shiro默认的session管理替代Tomcat的HttpSession...