Shiro緩存(十三)

使用緩存,能夠解決每次訪問請求都查數據庫的問題。第一次受權後存入緩存。數據庫

緩存流程

shiro中提供了對認證信息和受權信息的緩存。shiro默認是關閉認證信息緩存的,對於受權信息的緩存shiro默認開啓的。主要研究受權信息緩存,由於受權的數據量大。編程

 

用戶認證經過。緩存

該 用戶第一次受權:調用realm查詢數據庫框架

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

 

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

添加Jar包:

配置cacheManager

注入securityManager

classpath下配置shiro-ehcache.xml

到這裏就能夠使用緩存了,用戶登進去一次以後訪問系統不會每次都查詢數據庫查詢權限

 

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

若是用戶正常退出,緩存自動清空。spa

若是用戶非正常退出,緩存自動清空。code

若是修改了用戶的權限,而用戶不退出系統,修改的權限沒法當即生效。xml

須要手動進行編程實現:blog

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

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

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

 

在realm中定義clearCached方法:

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

 

測試清除緩存controller方法:

相關文章
相關標籤/搜索