這種方法簡單明瞭,適合對cache比較了解的人
思路:從shirocachemanager獲取使用者的認證快取,以及許可權快取,然後根據principal(username等可以確定使用者資訊的key,在配置shiro的時候由使用者指定)對cache進行remove操作。
**:
@resource(name = "shirocachemanager")
private cachemanager shirocachemanager;
@override
public void removeuserauthorization(string username)
cache.remove(new ******principalcollection(username, user_realm_name));
}
這裡需要注意一點,就是這裡 cache.remove(new ******principalcollection(username,user_realm_name))
這裡不能直接使用 cache.remove(username),因為shiro初始化cache的啥時候,使用的key的型別是******principalcollection,所以,傳過去的key必須是這個型別,否則刪除失敗(這裡是個坑,看到網上很多教程直接用ccache.remove(username)),其次,這裡的常量,user_realm_name是在自定義realm初始化的時候設定的,還有,cache的名字也是在配置的時候設定的(cache.xml裡面配置的名字也要和配置的相同,否則找不到cache,而使用defaultcache),具體見以下**:
/**
* 自定義db認證
** @return 認證域
*/@bean
public authorizingrealm userrealm()
};}
/**
* 重新賦值許可權(在比如:給乙個角色臨時新增乙個許可權,需要呼叫此方法重新整理許可權,否則還是沒有剛賦值的許可權)
* @param myrealm 自定義的realm
* @param username 使用者名稱
*/
public static void reloadauthorizing(myrealm myrealm,string username)
myrealm.getauthorizationcache().remove(subject.getprincipals());
這裡是realm給的方法,通過這個方法,可以清除快取。
兩種方法各有有缺,給位挑選自己喜歡的方法是用就好,個人是比較偏向第一種,邏輯更清晰,明確。
shiro重新整理許可權
近期做的那個專案購買之後需要重新整理許可權,這個之前沒做過,通過檢視與找到了動態重新整理許可權的方式,加入我的專案如下進行許可權修改 realmsecuritymanager rsm realmsecuritymanager securityutils.getsecuritymanager acco...
Shiro許可權認證
shiro的授權以及許可權 關係圖 我們需要在service層中先寫好方法 public inte ce shirouserservice然後imp繼承 service shirouserservice public class shirouserserviceimpl implements shi...
Shiro許可權認證Web
目錄 shiro內建的過濾器講解 filter配置路徑 shiro 資料安全之資料加解密 1.核心過濾器類 defaultfilter,配置哪個路徑對應哪個 進行處理 2.authc org.apache.shiro.web.filter.authc.formauthenticationfilter...