shiro 动态修改资源权限不需要重启项目或者重新登录用户

来源:互联网 发布:sql语句时间格式化 编辑:程序博客网 时间:2024/05/17 11:04

用shiro做权限控制的时候,变更用户或者角色的权限后刷新界面不会重新加载权限,需要重启tomcat或者用户重新登录,特别的不人性化,通过下面的方式可以解决这个问题,但仅仅针对于单机,对集群来说就不太清楚,以后有了更好的方法再去使用(菜鸟级别,还需要学习很多):

代码使用:

工具类中:

/** * * @Title: clearAuth * @Description: TODO 清空所有资源权限  * @return void    返回类型 */public static void clearAuth(){RealmSecurityManager rsm = (RealmSecurityManager)SecurityUtils.getSecurityManager();ShiroDbRealm realm = (ShiroDbRealm)rsm.getRealms().iterator().next();realm.clearAuthz();}

自定义AuthorizingRealm中:

public void clearAuthz(){this.clearCachedAuthorizationInfo(SecurityUtils.getSubject().getPrincipals());}

在进行权限修改完成之后,进行去权限的清空

效果:

授权改变前



授权改变刷新后:


当你把权限清空之后,刷新界面,shiro会自动重新加载自定义realm中的doGetAuthorizationInfo()方法进行角色和权限的验证,这样可以达到预期的结果了

阅读全文
1 0
原创粉丝点击