Shiro三(身份認證)

2021-09-23 13:58:09 字數 1256 閱讀 9855

subject的驗證過程可以分解為三個步驟:

1. 生成subject提交的主體和憑證

usernamepasswordtoken token = new usernamepasswordtoken(username, password);

token.setrememberme(true);

shiro並不關心如何獲取這些資訊:資料可能是由html表單提交,也可能是從http頭中檢索的,或者可能是從swing或flex中讀取的gui密碼表單,或者可能通過命令列引數。從應用程式終端使用者收集資訊的過程與shiro的authenticationtoken概念完全分離,它與協議無關。

2. 提交主體和憑證進行身份​​驗證

在收集了主體和憑證並將其表示為authenticationtoken例項之後,我們需要將令牌提交給shiro執行身份驗證:

subject currentuser = securityutils.getsubject();

currentuser.login(token);

3. 驗證成功或失敗

如果login方法沒有丟擲異常,則說明subject已經通過認證。如果丟擲異常,則會返回相應的錯誤資訊,如:密碼錯誤,帳號鎖定等。shiro具有豐富的執行時authenticationexception層次結構,可以準確指示嘗試失敗的原因。可以login在乙個try/catch塊中包裝並捕獲您希望的任何異常:

try  catch ( unknownaccountexception uae )  catch ( incorrectcredential***ception ice )  catch ( lockedaccountexception lae )  catch ( excessiveattempt***ception eae )  ... catch your own ...

} catch ( authenticationexception ae )

4. 登出

與驗證相反的是登出登入狀態。當subject完成與應用程式互動,可以呼叫subject.logout()放棄所有的身份資訊:

currentuser.logout();
在呼叫logout後,所有的session將被登出,並且所有認證都會取消關聯(例如,在web應用程式中,rememberme cookie也將被刪除)。在subject登出之後,該subject例項再次被視為匿名。

由於web應用程式中的身份通常是使用cookie保留。

Shiro身份認證流程

shiro全域性設定 1.獲取securitymanager工廠,讀取ini檔案 factoryfactory new inisecuritymanage ctory configfile 2.通過ini初始化例項,將配置好的的realm注入securitymanager例項 org.apache....

Shiro編寫身份認證 簡單版

controller 中的登入介面login login public string login string username,string userpassword catch authenticationexception e 步驟 username userpassword 判空非法等操作 ...

Shiro許可權認證

shiro的授權以及許可權 關係圖 我們需要在service層中先寫好方法 public inte ce shirouserservice然後imp繼承 service shirouserservice public class shirouserserviceimpl implements shi...