shiro登陸認證過程原理

2021-10-14 15:25:20 字數 1656 閱讀 4451

問題:shiro到底是如何認證的呢,原理是啥呢?

1、在登入頁面開始登入 輸入使用者名稱和密碼

2、後台接收到了登入請求,執行以下**,然後開始認證

登入的過程將使用者名稱和密碼傳入usernamepasswordtoken中

3、 然後進入delegatingsubject的login方法

在這裡所有安全操作都會委託給securitymanager來執行

4、 開始進行認證方法

這個info就是userrealm的dogetauthenticationinfo方法(用於認證)返回的info

5、經過一系列的挑戰,進入以下方法

這裡才是真正的具體實現方法

6、然後進入dosinglerealmauthentication方法,然後判斷userrealm是否支援token

7、下面就是重中之重,開始完成一系列的認證和密碼匹配過程

我們這時候找到自定義realm,userrealm是shiro和資料認證和授權的橋梁,可以通過此類從資料庫中獲取使用者資訊和許可權。

(1)、先從快取中獲取info

(2)、如果獲取不到,就從userrealm的dogetauthenticationinfo方法中獲取,在此方法中將資料庫的加密後的使用者密碼獲取,封裝到info中並返回

(3)、對密碼進行匹配,在shiroconfig中配置了憑證匹配器,通過此配置對token中的密碼進行加密,然後和封裝在info中的密碼(從資料庫中獲取的加密密碼)進行匹配,如果成功就說明整個認證過程成功,失敗就報錯

(4)、登陸認證成功後,將info存入快取中。同時將使用者資訊存入session中,這個session不是放在tomcat中的session,而是屬於shiro自己的session,shiro用defaultwebsessionmanager呼叫start()建立******session,並將******session放在redis中,並向前端返回乙個sessionid。下次前端訪問其他介面的時候,***就會攔截此請求,就會判斷******session是否存在該使用者資訊,如果存在就說明已經登入,不存在就拒絕訪問。同時也可以通過subject.isauthenticated()判斷是否登入

使用shiro實現登陸認證

shiro認證步驟 1.收集subject提交的身份和證明 usernamepasswordtoken token new usernamepasswordtoken user.getusername user.getpassword 2.向authenticating提交身份和證明 subject...

shiro學習筆記 3 登陸認證

在shiro框架中,未登入就是未認證,登陸了才算認證,認證後只能使用一些基本許可權,使用更多的許可權需要授權,認證和授權是不同的概念。一 useraction中的相關 public string login catch exception e 沒有異常,驗證正確,將查詢到的user存入session...

shiro實現登陸的過程

shiro實現登陸的過程 大致1,例項化token 2,token放入subject登陸 1,自定義登陸 1,例項化token 2,token放入subject登陸 subject currentuser securityutils.getsubject 獲取當前的subject usernamep...