shiro 权限加密下的密码修改你会发现出现修改后只能用原先代码密码才登录上
原因:缓存问题 好吧,这很容易想到
然而: 一开始我将ssm 中配置的缓存 清除 ,然而并没有什么用

<!--授权信息缓存-->
<cache name="authorizationCache"
maxEntriesLocalHeap="2000"
eternal="false"
timeToIdleSeconds="0"
timeToLiveSeconds="0"
overflowToDisk="false"
statistics="true">
</cache>
解决: https://blog.youkuaiyun.com/qq_38058332/article/details/83416208
引入 realm shiro的logout登出,只是将放置PrincipalCollection这个集合置空,删除了session,但是没有清空缓存,手动清除缓存
//退出并清理缓存 Subject subject= SecurityUtils.getSubject(); subject.logout(); //自定义清除缓存 Cache<Object,AuthenticationInfo> cache=systemUserRealm.getAuthenticationCache(); if (cache!=null){ cache.remove(sysUserDO.getUsername()); }
本文探讨了在Shiro权限加密环境下,密码修改后仅能使用原密码登录的问题,揭示了这是由于缓存未及时更新所致。通过分析shiro的logout机制,发现其仅清除PrincipalCollection集合和session,而未清空缓存。文章提供了手动清除缓存的方法,确保密码修改后的新密码能立即生效。
2295

被折叠的 条评论
为什么被折叠?



