【Java】shiro使用clearCachedAuthenticationInfo无法清除认证信息
使用this.clearCachedAuthenticationInfo()
,传入了令牌,同样执行this.clearCachedAuthorizationInfo()
操作可以将授权信息清空,以上两项操作都是传入的一样的principals
,在Debug中发现执行到clearCachedAuthenticationInfo
中this.getAvailableAuthenticationCache()
的返回值为NULL:
还请大神解答。
回答
目前代替方案:
public void clearAuthByUserId(String uid,Boolean author, Boolean out){ //获取所有session
Collection<Session> sessions = redisSessionDAO.getActiveSessions();
for (Session session:sessions){
//获取session登录信息。
Object obj = session.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY);
if(obj instanceof SimplePrincipalCollection){
//强转
SimplePrincipalCollection spc = (SimplePrincipalCollection)obj;
SysUser user = new SysUser();
BeanUtils.copyProperties(spc.getPrimaryPrincipal(),user);
//判断用户,匹配用户ID。
if(uid.equals(user.getId())){
if(author)
this.clearCachedAuthorizationInfo(spc);
if(out){
redisSessionDAO.delete(session);
}
}
}
}
}
你需要确认下AuthenticatingRealm类中如下的内容存入的是什么。。
以上是 【Java】shiro使用clearCachedAuthenticationInfo无法清除认证信息 的全部内容, 来源链接: utcz.com/a/87697.html