在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/人工智能  Java/ shiro使用clearCachedAuthenticationInfo無法清除

shiro使用clearCachedAuthenticationInfo無法清除認證信息

使用this.clearCachedAuthenticationInfo(),傳入了令牌,同樣執(zhí)行this.clearCachedAuthorizationInfo()操作可以將授權信息清空,以上兩項操作都是傳入的一樣的principals,在Debug中發(fā)現執(zhí)行到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);
                }
            }
        }
    }
}
2018年2月14日 06:22