shiro如何在编辑用户权限后,立即清除原来用户的权限缓存


最近在弄权限相关的东西,用了shiro后发现权限的缓存会存在redis中,分配用户角色后,并没有刷新缓存,需要手动修改,在网上看了很多博客后,总算试出来一个好用的,

就是在分配用户角色后,可以使用这段代码来清除想要重置的用户的权限缓存。

/** 
     * 重新赋值权限(在比如:给一个角色临时添加一个权限,需要调用此方法刷新权限,否则还是没有刚赋值的权限) 
     * @param myRealm 自定义的realm 
     * @param username 用户名 
     */  
    public static void reloadAuthorizing(MyRealm myRealm,String username){  
        Subject subject = SecurityUtils.getSubject();   
        String realmName = subject.getPrincipals().getRealmNames().iterator().next();   
        //第一个参数为用户名,第二个参数为realmName,test想要操作权限的用户   
        SimplePrincipalCollection principals = new SimplePrincipalCollection(username,realmName);   
        subject.runAs(principals);   
        myRealm.getAuthorizationCache().remove(subject.getPrincipals());   
        subject.releaseRunAs();  
    }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM