SSM+Apache shiro--ehcache缓存清理


使用ehache进行缓存,可以再登陆认证成功后缓存认证授权及权限信息,但是用户退出时,该用户对应的权限信息不能进行实时更新,所以要求在用户退出系统时可以清理其对应的权限信息缓存。

在配置ehcache缓存是我们配置了myshiroCache,并在myrealm中指定了权限缓存的名字,所以在用户退出时就可以通过cacheManager及缓存名字获取该信息,并清理,实现退出系统时清理权限信息。

package com.copsec.railway.im.util;
import org.apache.log4j.Logger;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.cache.Cache;
import org.apache.shiro.cache.CacheManager;
import org.apache.shiro.subject.SimplePrincipalCollection;
import org.apache.shiro.subject.Subject;public class ShiroAuthorizationHelper {

    private static CacheManager cacheManager;

    private static Logger logger = Logger.getLogger(ShiroAuthorizationHelper.class);

    /**
     * 清除用户的权限
     * 
     *
     * @param principal 登陆用户对应的principal对象
     */
    public static void clearAuthorizationInfo(SimplePrincipalCollection principal) {
        logger.info("clear the user: " + principal.toString() + "'s authorizationInfo");
        Cache<Object, Object> cache = cacheManager.getCache("myShiroCache");
        cache.remove(principal);
    }

    /**
     * 清除当前用户的权限
     */
    public static void clearAuthorizationInfo() {
        if (SecurityUtils.getSubject().isAuthenticated()) {
            Subject subject = SecurityUtils.getSubject();
            String username = subject.getPrincipal().toString();
            String realmName = subject.getPrincipals().getRealmNames().iterator().next();
            SimplePrincipalCollection principalCollection = new SimplePrincipalCollection(username, realmName);
            logger.debug("get user principalCollection :"+principalCollection);
            // 调用清理用户权限
            clearAuthorizationInfo(principalCollection);
        }
    }

    /**
     * 由Spring bean将对象注入
     * @param cacheManager
     */
    public static void setCacheManager(CacheManager cacheManager) {
        
        ShiroAuthorizationHelper.cacheManager = cacheManager;
    }


}

完成后即可在logout controller中调用,进行清理权限信息。

优质内容筛选与推荐>>
1、第三次作业
2、将MS SQLServer 2005导入 MS SQLServer 2000的方法及注意事项
3、h5地理位置对象navigator.geolocation
4、SQL GUID去除横线,并转换为小写
5、缓存压缩技术


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号