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