shiro 動態修改資源許可權不需要重啟專案或者重新登入使用者
阿新 • • 發佈:2019-01-23
用shiro做許可權控制的時候,變更使用者或者角色的許可權後重新整理介面不會重新載入許可權,需要重啟tomcat或者使用者重新登入,特別的不人性化,通過下面的方式可以解決這個問題,但僅僅針對於單機,對叢集來說就不太清楚,以後有了更好的方法再去使用(菜鳥級別,還需要學習很多):
程式碼使用:
工具類中:
/** * * @Title: clearAuth * @Description: TODO 清空所有資源許可權 * @return void 返回型別 */ public static void clearAuth(){ RealmSecurityManager rsm = (RealmSecurityManager)SecurityUtils.getSecurityManager(); ShiroDbRealm realm = (ShiroDbRealm)rsm.getRealms().iterator().next(); realm.clearAuthz(); }
自定義AuthorizingRealm中:
public void clearAuthz(){
this.clearCachedAuthorizationInfo(SecurityUtils.getSubject().getPrincipals());
}
在進行許可權修改完成之後,進行去許可權的清空
效果:
授權改變前
授權改變重新整理後:
當你把許可權清空之後,重新整理介面,shiro會自動重新載入自定義realm中的doGetAuthorizationInfo()方法進行角色和許可權的驗證,這樣可以達到預期的結果了