大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Shiro框架原理解析

Shiro框架原理解析

更新時間:2021-07-29 17:01:22 來源:動力節點 瀏覽1569次

1.什么是shiro

shiro是apache公司下一款優秀的Java安全認證框架,它強大且容易使用,它支持身份驗證、授權、密碼和會話管理功能,與shiro有著同樣功能的框架是Spring Security,對比Spring Security來看,shiro用起來簡單且可以脫離Spring使用,但是Spring Security不能夠脫離Spring去使用,shiro屬于一種輕量級的框架,所以許多公司都在使用shiro。

2.框架原理圖及名詞解釋

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存取認證、授權相關數據。(它的主要目的是與數據庫打交道,查詢數據庫中的認證的信息(比如用戶名和密碼),查詢授權的信息(比如權限的code等,所以這里可以理解為調用數據庫查詢一系列的信息,一般情況下在項目中采用自定義的realm,因為不同的業務需求不一樣))

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

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

認證原理圖

shiro框架原理

認證流程

subject(主體)請求認證,調用subject.login(token)

SecurityManager(安全管理器)執行認證

SecurityManager通過ModularRealmAuthenticator進行認證。

ModularRealmAuthenticator將token傳給realm,realm根據token中用戶信息從數據庫查詢用戶信息(包括身份和憑證),realm如果查詢不到用戶給ModularRealmAuthenticator返回null,ModularRealmAuthenticator拋出異常(用戶不存在),realm如果查詢到用戶給ModularRealmAuthenticator返回AuthenticationInfo(認證信息),ModularRealmAuthenticator拿著AuthenticationInfo(認證信息)去進行憑證(密碼)比對。如果一致則認證通過,如果不致拋出異常(憑證錯誤)。

授權原理圖

shiro框架原理

授權流程

對subject進行授權,調用方法isPermitted("")或者hasRole("")

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

ModularRealmAuthorizer執行realm(自定義的CustomRealm)從數據庫查詢權限數據調用realm的授權方法:doGetAuthorizationInfo

realm從數據庫查詢權限數據,返回ModularRealmAuthorizer

ModularRealmAuthorizer調用PermissionResolver進行權限串比對

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

Shiro過濾器標簽配置列表及權限可訪問對比

/admins/**=anon               # 表示該 uri 可以匿名訪問/admins/**=auth               # 表示該 uri 需要認證才能訪問/admins/**=authcBasic         # 表示該 uri 需要 httpBasic 認證/admins/**=perms[user:add:*]  # 表示該 uri 需要認證用戶擁有 user:add:* 權限才能訪問/admins/**=port[8081]         # 表示該 uri 需要使用 8081 端口/admins/**=rest[user]         # 相當于 /admins/**=perms[user:method],其中,method 表示  get、post、delete 等/admins/**=roles[admin]       # 表示該 uri 需要認證用戶擁有 admin 角色才能訪問/admins/**=ssl                # 表示該 uri 需要使用 https 協議/admins/**=user               # 表示該 uri 需要認證或通過記住我認證才能訪問/logout=logout                # 表示注銷,可以當作固定配置

以上就是動力節點小編介紹的"Shiro框架原理解析",希望對大家有幫助,想了解更多可查看Shiro視頻教程。動力節點在線學習教程,針對沒有任何Java基礎的讀者學習,讓你從入門到精通,主要介紹了一些Java基礎的核心知識,讓同學們更好更方便的學習和了解Java編程,感興趣的同學可以關注一下。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 午夜a毛片| 日日日干干干 | 成年美女 | 精品综合久久久久久99 | 欧美成人免费一级人片 | 午夜精品久久久久久久99 | 波多野结衣免费一区二区三区香蕉 | 黄色毛片视频免费 | 深夜福利影院在线观看 | 国产日韩欧美精品在线 | 成人小视频免费在线观看 | 国产精品久久久久久福利69堂 | 久久国内免费视频 | 欧美一级美片在线观看免费 | 日韩国产精品99久久久久久 | 中文字幕日本精品一区二区三区 | 不卡国产视频 | 欧美视频在线一区 | 日本中文字幕一区二区 | 欧美一区二区三区影院 | 亚洲视频欧洲视频 | 精品在线视频播放 | 亚洲欧美日韩国产精品网 | 免费久草 | 久久精品亚洲日本筱田优 | 久草在线视频在线观看 | 国产aaa级一级毛片 国产aaa毛片 | 一区二区三区四区免费视频 | 色综合伊人色综合网亚洲欧洲 | 久久性生活视频 | 综合7799亚洲伊人爱爱网 | 免费看美女吃男生私人部位 | 日本最新免费二区 | 日韩在线视频不卡 | 欧洲97色综合成人网 | 欧美激情一区二区三区视频 | 国产精品亚洲欧美一级久久精品 | 天天舔天天干天天操 | 一级女性全黄生活片免费 | 四虎永久成人免费 | 男人私人影院 |