shiro原理及其運行流程介紹


shiro原理及其運行流程介紹

 

認證執行流程



1、通過ini配置文件創建securityManager

2、調用subject.login方法主體提交認證,提交的token

3、securityManager進行認證,securityManager最終由ModularRealmAuthenticator進行認證。

4、ModularRealmAuthenticator調用IniRealm(給realm傳入token) 去ini配置文件中查詢用戶信息

5、IniRealm根據輸入的token(UsernamePasswordToken)從 shiro.ini查詢用戶信息,根據賬號查詢用戶信息(賬號和密碼)

         如果查詢到用戶信息,就給ModularRealmAuthenticator返回用戶信息(賬號和密碼)

         如果查詢不到,就給ModularRealmAuthenticator返回null

6、ModularRealmAuthenticator接收IniRealm返回Authentication認證信息

         如果返回的認證信息是null,ModularRealmAuthenticator拋出異常(org.apache.shiro.authc.UnknownAccountException)
         如果返回的認證信息不是null(說明inirealm找到了用戶),對IniRealm返回用戶密碼 (在ini文件中存在)

         和 token中的密碼 進行對比,如果不一致拋出異常(org.apache.shiro.authc.IncorrectCredentialsException)

授權流程


1、對subject進行授權,調用方法isPermitted("permission串")

2、SecurityManager執行授權,通過ModularRealmAuthorizer執行授權

3、ModularRealmAuthorizer執行realm(自定義的Realm)從數據庫查詢權限數據

  調用realm的授權方法:doGetAuthorizationInfo
4、realm從數據庫查詢權限數據,返回ModularRealmAuthorizer

5、ModularRealmAuthorizer調用PermissionResolver進行權限串比對

6、如果比對后,isPermitted中"permission串"在realm查詢到權限數據中,說明用戶訪問permission串有權限,否則 沒有權限,拋出異常。

原   文


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM