上一節介紹了realm的作用:
realm:需要根據token中的身份資訊去查詢資料庫(入門程式使用ini配置檔案),如果查到使用者返回認證資訊,如果查詢不到返回null。token就相當於是對使用者輸入的使用者名稱和密碼的乙個封裝。下面就是建立乙個使用者名稱密碼token:
/** * 自定義realm。根據上面穿下來的token去資料庫查資訊,查到返回乙個******authenticationinfo,查不到返回null
* @author: qlq
* @date : 2023年7月28日下午8:45:52
*/public class customrealm extends authorizingrealm
// 用於認證
@override
protected authenticationinfo dogetauthenticationinfo(
authenticationtoken token) throws authenticationexception */
// 模擬從資料庫查詢到密碼
string password = "111111";
// 如果查詢到返回認證資訊authenticationinfo
******authenticationinfo ******authenticationinfo = new ******authenticationinfo(
usercode, password, this.getname());
return ******authenticationinfo;
}// 用於授權
@override
protected authorizationinfo dogetauthorizationinfo(
principalcollection principals)
}檢視:authenticationtoken
public inte***ce authenticationtoken extends serializable需要在shiro-realm.ini配置realm注入到securitymanager中。
// 自定義realm測試@test
public void testcustomrealm() catch (authenticationexception e)
// 是否認證通過
boolean isauthenticated = subject.isauthenticated();
system.out.println("是否認證通過:" + isauthenticated);
}
Shiro 自定義Realm實現認證
1.獲取當前的 subject.呼叫 securityutils.getsubject 2.測試當前的使用者是否已經被認證.即是否已經登入.呼叫 subject 的 isauthenticated 3.若沒有被認證,則把使用者名稱和密碼封裝為 usernamepasswordtoken 物件 1 建...
shiro之自定義realm
一 為當限前登入的使用者授予角色和權 protected authorizationinfo dogetauthorizationinfo principalcollection principals 這邊我一直沒找到什麼好的方法 就是在使用者登陸的時候,就要進行這一步的驗證,但是沒有實現,感覺有點...
許可權框架 shiro 自定義realm
上篇文章中是使用的預設realm來實現的簡單登入,這僅僅只是個demo,真正專案中使用肯定是需要連線資料庫的 首先建立自定義realm檔案,如下 在shiro中注入自定義realm的完全限定類名 1 main 2 your custom realm path 3foorealm com.lee.sh...