Xy718
1
shiroFilter过滤链的刷新已经做好了
但是还需要在线修改用户的授权信息才能做到不下线不重启,
也就是修改用户在doGetAuthorization函数中的授权信息
我试过在更新系统 shiro过滤链调用ShiroUtil.getSubjct().isPermitted("");来重新出发realm的授权,
但是没有效果,用户的授权信息没有变化
请问用什么方法可以在不关闭程序、不登出用户的情况下在动态改变线上用户包含的授权信息呢?
补一个问题,怎么获取在线用户的授权信息?
可能是再次调用授权时没有改变用户的授权信息,也就是白白调用了doGetAuthorization()
Jonny
4
核心,更新缓存
this.clearCachedAuthorizationInfo(SecurityUtils.getSubject().getPrincipals());
2 个赞
ojbk
7
this.clearCachedAuthorizationInfo(SecurityUtils.getSubject().getPrincipals());
}
更新权限调用这个方法完事
2 个赞
Xy718
8
各位!!!
解决了,在线的修改用户Realm的授权信息
在更新shiro系统后台的过滤链后增加一条:
ShiroUtil.getSubjct().isPermitted(“123”);
这条代码能触发用户Realm的doGetAuthorizationInfo,重新授权
之前我用着不行其实是我的shiro过滤链有问题,新加的鉴权地址被排在了/**==perms[233]后面,所以导致了用户一直鉴权失败
在这里我要感谢下我现在在学习的这个项目的大佬,我提出bug后他研究了下发现了问题所在
红圈是原来清空shiro过滤链的代码
绿圈是加上的代码,绿圈的部分才能真正清空每个filter中的过滤链!
@Jonny @ojbk