H5W3
当前位置:H5W3 > 其他技术问题 > 正文

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

使用this.clearCachedAuthenticationInfo(),传入了令牌,同样执行this.clearCachedAuthorizationInfo()操作可以将授权信息清空,以上两项操作都是传入的一样的principals,在Debug中发现执行到clearCachedAuthenticationInfothis.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类中如下的内容存入的是什么。。
图片描述

本文地址:H5W3 » shiro使用clearCachedAuthenticationInfo无法清除认证信息

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址