Shiro緩存(十三)


使用緩存,可以解決每次訪問請求都查數據庫的問題。第一次授權后存入緩存。

緩存流程

shiro中提供了對認證信息和授權信息的緩存。shiro默認是關閉認證信息緩存的,對於授權信息的緩存shiro默認開啟的。主要研究授權信息緩存,因為授權的數據量大。

 

用戶認證通過。

該 用戶第一次授權:調用realm查詢數據庫

該 用戶第二次授權:不調用realm查詢數據庫,直接從緩存中取出授權信息(權限標識符)。

 

-------------------------------------使用ehcache緩存框架------------------------------

添加Jar包:

配置cacheManager

注入securityManager

classpath下配置shiro-ehcache.xml

到這里就可以使用緩存了,用戶登進去一次之后訪問系統不會每次都查詢數據庫查詢權限

 

 ------------------------------------------------緩存清-空--------------------------

如果用戶正常退出,緩存自動清空。

如果用戶非正常退出,緩存自動清空。

如果修改了用戶的權限,而用戶不退出系統,修改的權限無法立即生效。

需要手動進行編程實現:

         在權限修改后調用realm的clearCache方法清除緩存。

正常開發時要放在service中調用。

在service中,權限修改后調用realm的清空緩存方法。

 

在realm中定義clearCached方法:

// 清除緩存
    public void clearCached() {
        PrincipalCollection principals = SecurityUtils.getSubject().getPrincipals();
        super.clearCache(principals);
    }

 

測試清除緩存controller方法:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM