Shiro 多Realm驗證和認證策略 七

2021-08-20 12:10:54 字數 2035 閱讀 2991

檢視源**modularrealmauthenticator類

再新增乙個secondshirorealm類

//修改,用使用者名稱作為鹽值哦!

object credentials = null;

if("mike".equals(username))else if("admin".equals(username))

/ // c)realmname:當前realm物件的name,呼叫父類的getname()方法;

string realmname = getname();

// 認證物件

//******authenticationinfo info = new ******authenticationinfo(principal, credentials, realmname);

//d)鹽值

bytesource credentialssalt=bytesource.util.bytes(username);

// 認證物件

執行斷點除錯

再修改secondshirorealm類中的密碼不正確,使用者名稱用secondrealmname

執行除錯檢視

檢視到有兩個策略

可以登入成功!

檢視如下所示

secondshirorealm是登入失敗!

除錯檢視

執行總結: 

authenticationstrategy 介面的預設實現:

1) firstsuccessfulstrategy:只要有乙個 realm 驗證成功即可,只返回第乙個 realm 身份驗證成功的認證資訊,其他的忽略;

2) atleastonesuccessfulstrategy:只要有乙個realm驗證成功即可,和firstsuccessfulstrategy 不同,將返回所有realm身份驗證成功的認證資訊;

3) allsuccessfulstrategy:所有realm驗證成功才算成功,且返回所有realm身份驗證成功的認證資訊,如果有乙個失敗就失敗了。

注意:modularrealmauthenticator 預設是 atleastonesuccessfulstrategy策略

Shiro 六 多Realm驗證

在com.dw.shiro.realms下建立secondrealm 驗證方式改為sha1驗證 1.secondrealm 如下 public class secondrealm extends authenticatingrealm 5.根據使用者資訊的情況,決定是否丟擲其他異常if monste...

Shiro 自定義Realm實現認證

1.獲取當前的 subject.呼叫 securityutils.getsubject 2.測試當前的使用者是否已經被認證.即是否已經登入.呼叫 subject 的 isauthenticated 3.若沒有被認證,則把使用者名稱和密碼封裝為 usernamepasswordtoken 物件 1 建...

shiro自定義realm認證 五

上一節介紹了realm的作用 realm 需要根據token中的身份資訊去查詢資料庫 入門程式使用ini配置檔案 如果查到使用者返回認證資訊,如果查詢不到返回null。token就相當於是對使用者輸入的使用者名稱和密碼的乙個封裝。下面就是建立乙個使用者名稱密碼token 自定義realm。根據上面穿...