中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

備忘錄七:Shiro基本概念

發布時間:2020-08-05 06:17:52 來源:ITPUB博客 閱讀:147 作者:百聯達 欄目:編程語言

一:Shiro簡介

  1. Apache Shiro是Java的一個安全框架。

  2. Shiro 比Spring Security更簡單輕量。

  3. Shiro 可以實現認證、授權、加密、會話管理、與Web集成、緩存等 

  4. Shiro不僅可以用在JavaSE環境,也可以用在JavaEE環境   

    備忘錄七:Shiro基本概念            

                                   

 Authentication 身份認證/登錄,驗證用戶是不是擁有相應的身份;

 Authorization 授權,即權限驗證,驗證某個已認證的用戶是否擁有某個權限;

Session Manager 會話管理,即用戶登錄后就是一次會話,在沒有退出之前,它的所有信息都在會話中;會話可以是普通JavaSE環境的,      也可以是J2EE環境的,如Web環境;

Cryptography 加密,保護數據的安全性,如密碼加密存儲到數據庫,而不是明文存儲;

Web Support Web支持,可以非常容易的集成到Web環境;

Caching:緩存,比如用戶登錄后,其用戶信息、擁有的角色/權限不必每次去查,這樣可以提高效率;

Concurrency Shiro支持多線程應用的并發驗證,即如在一個線程中開啟另一個線程,能把權限自動傳播過去;

Testing 提供測試支持;

Run As 允許一個用戶假裝為另一個用戶(如果他們允許)的身份進行訪問;

Remember Me 記住我,這個是非常常見的功能,即一次登錄后,下次再訪問的話不用重新登錄。

二:Shiro架構

備忘錄七:Shiro基本概念

Subject 主體,可以看到主體可以是任何可以與應用交互的“用戶”;

SecurityManager 相當于SpringMVC中的DispatcherServlet或者Struts2中的FilterDispatcher;是Shiro的心臟;所有具體的交互都通過SecurityManager進行控制;它管理著所有Subject、且負責進行認證和授權、及會話、緩存的管理。

Authenticator 認證器,負責主體認證的,這是一個擴展點,如果用戶覺得Shiro默認的不好,可以自定義實現

Authrizer 授權器,或者訪問控制器,用來決定主體是否有權限進行相應的操作;即控制著用戶能訪問應用中的哪些功能;

Realm 可以有1個或多個Realm,可以認為是安全實體數據源,即用于獲取安全實體的;可以是JDBC實現,也可以是LDAP實現,或者內存實現等等,一般應用中都需要實現自己的Realm

SessionManager 不需要通過Servlet容器既可以實現Session管理,可以用于 JavaSE和 JavaEE環境。

SessionDAO Session存儲,可以使用數據庫或者緩存。

CacheManager 緩存控制器,來管理如用戶、角色、權限等的緩存的

Cryptography 密碼模塊,Shiro提高了一些常見的加密組件用于如密碼加密/解密的。

三:Shiro核心組件

備忘錄七:Shiro基本概念

1. Subject: 主體,代表了當前“用戶”,與當前應用交互的任何東西都是Subject,如網格爬蟲,機器人等,是一個抽象的概念;所有Subject都綁定到SecurityManager,與Subject的所有交互都會委托給SecurityManager. 可以把Subject認為是一個門面,SecurityManager才是實際的執行者。

2.SecurityManager: 安全管理器,所有與安全相關的操作都會與SecurityManager交互;它管理著所有Subject;是Shiro的核心。類似于SpringMVC中的DispatcherServlet。

3.Realm: 域,Shiro從Realm獲取安全數據(如用戶,角色,權限),SecurityManager要驗證用戶身份,需要從Realm獲取相應的用戶進行比較以確定用戶身份是否合法;也需要從Realm得到用戶相應的角色/權限進行驗證用戶是否能進行操作,可以把Realm看成DataSource,即安全數據源。

四:Shiro認證和授權的基本流程

備忘錄七:Shiro基本概念

1、首先調用 Subject.login(token)進行登錄,其會自動委托給 Security Manager,調用之前必須通過 SecurityUtils. setSecurityManager()設置;

2SecurityManager負責真正的身份驗證邏輯;它會委托給 Authenticator進行身份驗證;

3Authenticator才是真正的身份驗證者, Shiro API中核心的身份認證入口點,此處可以自定義插入自己的實現;

4Authenticator可能會委托給相應的 AuthenticationStrategy進行多 Realm身份驗證,默認 ModularRealmAuthenticator會調用 AuthenticationStrategy進行多 Realm身份驗證;

5Authenticator會把相應的 token傳入 Realm,從 Realm獲取身份驗證信息,如果沒有返回 /拋出異常表示身份驗證失敗了。此處可以配置多個 Realm,將按照相應的順序及策略進行訪問。



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

内丘县| 金沙县| 张家川| 马龙县| 新竹县| 北碚区| 临洮县| 平邑县| 台湾省| 平谷区| 珲春市| 察隅县| 上虞市| 灵璧县| 宁德市| 三门峡市| 涪陵区| 锡林郭勒盟| 涟源市| 盐源县| 太保市| 措勤县| 德阳市| 成武县| 镶黄旗| 库车县| 上思县| 北票市| 孟村| 新密市| 平定县| 澄城县| 怀远县| 于田县| 望奎县| 长宁县| 安图县| 沁阳市| 高清| 二连浩特市| 凤庆县|