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...