Shiro学习--解决修改权限后需要重启的问题

来源:互联网 发布:playclub刘亦菲数据 编辑:程序博客网 时间:2024/06/06 16:44

使用shiro可能会遇到修改了用户权限后,却没有生效,需要重启Tomcat才能生效的问题,在项目中这样显然是不合理的。
这种情况是因为缓存的原因,很好解决,只需在每次登陆成功后使用以下代码清理一下缓存就可以了清理一下缓存就可以了,看代码

clearCachedAuthorizationInfo(SecurityUtils.getSubject().getPrincipals());

不过这种方法也有弊端,就是必须重新登陆后新设置的权限才能生效,如果想改完后立即生效,需要先在自定义的Realm中加入下面的函数

/** * 清理权限缓存 */public void clearCachedAuthorization(){//清空权限缓存clearCachedAuthorizationInfo(SecurityUtils.getSubject().getPrincipals());}

然后在修改用户权限的逻辑执行完之后使用下面代码

RealmSecurityManager rsm = (RealmSecurityManager)SecurityUtils.getSecurityManager();  MyRealm realm = (MyRealm)rsm.getRealms().iterator().next();     realm.clearCachedAuthorization();




阅读全文
0 0