Shiro基礎知識 Realm(二)

2021-08-20 18:33:08 字數 2063 閱讀 3626

authenticationinfo有兩個作用:

1)如果realm 是authenticatingrealm 子類(包括authorizingrealm,它繼承authenticationrealm),則提供給authenticatingrealm 內部使用的credentialsmatcher進行憑據驗證;(如果沒有繼承它需要在自己的realm中自己實現驗證);

2)提供給securitymanager來建立subject(提供身份資訊);

mergableauthenticationinfo 用於提供在多realm 時合併authenticationinfo 的功能,主要合併principal、如果是其他的如credentialssalt,會用後邊的資訊覆蓋前邊的。

比如hashedcredentialsmatcher , 在驗證時會判斷authenticationinfo 是否是saltedauthenticationinfo子類,來獲取鹽資訊。

account相當於我們之前的user,******account是其乙個實現;在inirealm、propertiesrealm這種靜態建立帳號資訊的場景中使用,這些realm 直接繼承******accountrealm,而******accountrealm 提供了相關的api 來動態維護******account;即可以通過這些api來動態增刪改查******account;動態增刪改查角色/許可權資訊。及如果您的帳號不是特別多,可以使用這種方式。

其他情況一般返回

******authenticationinfo

即可

******authenticationinfo authenticationinfo = new ******authenticationinfo(

authorizationinfo用於聚合授權資訊的:

public inte***ce authorizationinfo extends serializable
當我們使用authorizingrealm 時,如果身份驗證成功,在進行授權時就通過dogetauthorizationinfo方法獲取角色/許可權資訊用於授權驗證。

shiro 提供了乙個實現******authorizationinfo,大多數時候使用這個即可。

對於account 及******account,用於******accountrealm子類,實現動態角色/許可權維護的。

protected authorizationinfo dogetauthorizationinfo(principalcollection principalcollection)
principalcollection是乙個身份集合,因為我們可以在shiro中同時配置多個realm,所以呢身份資訊可能就有多個;因此其提供了principalcollection用於聚合這些身份資訊:

public inte***ce principalcollection extends iterable, serializable
因為principalcollection聚合了多個,此處最需要注意的是

getprimaryprincipal,如果只有乙個principal 那麼直接返回即可,如果有多個principal,則返回第乙個(因為內部使用map儲存,所以可以認為是返回任意乙個)

;onebytype / bytype根據憑據的型別返回相應的principal;fromrealm 根據realm 名字(每個principal 都與乙個realm 關聯)獲取相應的principal。

基礎知識 二

1,較大陣列應該在main函式外宣告,否則可能因為 他作為臨時變數在堆疊段中佔據的空間過大,棧溢位 2,string.h memcpy b,a,sizeof int k a b 複製k個元素 memcpy b,a,sizeof a a b memset a,0,sizeof a 將陣列全部填充為零 ...

基礎知識 二

1.物件導向的基本特徵 封裝 繼承 多型 2.內連線與外連線的區別 內連線需要保證兩個表中的所有行都滿足連線條件 而外連線則不然 外連線不僅包含符合連線條件的行 還包括左表 右表或兩個邊接表中所有資料行 3.事務是資料庫中乙個單獨的執行單元 事務的三個特性是 acid,分別是原子性 一致性 隔離性 ...

html基礎知識 二

1.用標籤定義,表示一行,表示列,表示表頭,表示表的內容主題 2.列表 列表分為有序列表,無序列表,定義列表。無序列表是乙個專案列表,此專案列表使用粗體圓點進行標記。無序列表始於 瀏覽器顯示結果 有序列表也是乙個專案列表,列表專案用數字進行標記。有序列表始於,列表專案始於 水果 香蕉 瀏覽器顯示結果...