檢視源**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。根據上面穿...