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.列表 列表分為有序列表,無序列表,定義列表。無序列表是乙個專案列表,此專案列表使用粗體圓點進行標記。無序列表始於 瀏覽器顯示結果 有序列表也是乙個專案列表,列表專案用數字進行標記。有序列表始於,列表專案始於 水果 香蕉 瀏覽器顯示結果...