【Java】shiro使用clearCachedAuthenticationInfo无法清除认证信息

使用this.clearCachedAuthenticationInfo(),传入了令牌,同样执行this.clearCachedAuthorizationInfo()操作可以将授权信息清空,以上两项操作都是传入的一样的principals,在Debug中发现执行到clearCachedAuthenticationInfothis.getAvailableAuthenticationCache()的返回值为NULL:
【Java】shiro使用clearCachedAuthenticationInfo无法清除认证信息

还请大神解答。

回答

目前代替方案:

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无法清除认证信息

以上是 【Java】shiro使用clearCachedAuthenticationInfo无法清除认证信息 的全部内容, 来源链接: utcz.com/a/87697.html

回到顶部