使用緩存,能夠解決每次訪問請求都查數據庫的問題。第一次受權後存入緩存。數據庫
shiro中提供了對認證信息和受權信息的緩存。shiro默認是關閉認證信息緩存的,對於受權信息的緩存shiro默認開啓的。主要研究受權信息緩存,由於受權的數據量大。編程
用戶認證經過。緩存
該 用戶第一次受權:調用realm查詢數據庫框架
該 用戶第二次受權:不調用realm查詢數據庫,直接從緩存中取出受權信息(權限標識符)。測試
若是用戶正常退出,緩存自動清空。spa
若是用戶非正常退出,緩存自動清空。code
若是修改了用戶的權限,而用戶不退出系統,修改的權限沒法當即生效。xml
須要手動進行編程實現:blog
在權限修改後調用realm的clearCache方法清除緩存。ip
正常開發時要放在service中調用。
在service中,權限修改後調用realm的清空緩存方法。
// 清除緩存 public void clearCached() { PrincipalCollection principals = SecurityUtils.getSubject().getPrincipals(); super.clearCache(principals); }