日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shiro将session认证改成token认证_Shiro 运行过程

發布時間:2025/3/21 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shiro将session认证改成token认证_Shiro 运行过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是shiro

shiro是apache的一個開源框架,是一個權限管理的框架,實現 用戶認證、用戶授權、

shiro架構

subject:主體,可以是用戶也可以是程序,主體要訪問系統,系統需要對主體進行認證、授權。

securityManager:安全管理器,主體進行認證和授權都是通過securityManager進行。

authenticator:認證器,主體進行認證最終通過authenticator進行的。

authorizer:授權器,主體進行授權最終通過authorizer進行的。

sessionManager:web應用中一般是用web容器對session進行管理,shiro也提供一套session管理的方式。

SessionDao: 通過SessionDao管理session數據,針對個性化的session數據存儲需要使用sessionDao。

cache Manager:緩存管理器,主要對session和授權數據進行緩存,比如將授權數據通過cacheManager進行緩存管理,和ehcache整合對緩存數據進行管理。

realm:域,領域,相當于數據源,通過realm存取認證、授權相關數據。

注意:在realm中存儲授權和認證的邏輯。

cryptography:密碼管理,提供了一套加密/解密的組件,方便開發。比如提供常用的散列、加/解密等功能。

比如 md5散列算法。

認證過程,授權過程

認證過程

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串有權限,否則 沒有權限,拋出異常。

其他安全框架對比

spring中有spring security (原名Acegi),是一個權限框架,它和spring依賴過于緊密,沒有shiro使用簡單。

shiro不依賴于spring,shiro不僅可以實現 web應用的權限管理,還可以實現c/s系統,分布式系統權限管理,shiro屬于輕量框架,越來越多企業項目開始使用shiro。

使用shiro實現系統的權限管理,有效提高開發效率,從而降低開發成本。

總結

以上是生活随笔為你收集整理的shiro将session认证改成token认证_Shiro 运行过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。