Springboot2集成Shiro框架(一)認識shiro

一、簡介

Apache Shiro是一個強大且易用的Java安全框架,執行身份驗證、授權、密碼和會話管理。使用Shiro的易於理解的API,您可以快速、輕鬆地獲得任何應用程序,從最小的移動應用程序到最大的網絡和企業應用程序。

二、核心架構

shiro的架構圖如下圖(該圖來自網絡),三個核心組件:Subject, SecurityManagerRealms.
Subject:即“當前操作用戶”。但是,在Shiro中,Subject這一概念並不僅僅指人,也可以是第三方進程、後臺帳戶(Daemon Account)或其他類似事物。它僅僅意味着“當前跟軟件交互的東西”。Subject代表了當前用戶的安全操作,SecurityManager則管理所有用戶的安全操作。

SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通過SecurityManager來管理內部組件實例,並通過它來提供安全管理的各種服務。

Authorizer:權限驗證器

Authenticator:身份認證器,登錄登出模塊

Realm: Realm充當了Shiro與應用安全數據間的“橋樑”或者“連接器”。也就是說,當對用戶執行認證(登錄)和授權(訪問控制)驗證時,Shiro會從應用配置的Realm中查找用戶及其權限信息。
  從這個意義上講,Realm實質上是一個安全相關的DAO:它封裝了數據源的連接細節,並在需要時將相關數據提供給Shiro。當配置Shiro時,你必須至少指定一個Realm,用於認證和(或)授權。配置多個Realm是可以的,但是至少需要一個。
  Shiro內置了可以連接大量安全數據源(又名目錄)的Realm,如LDAP、關係數據庫(JDBC)、類似INI的文本配置資源以及屬性文件等。如果缺省的Realm不能滿足需求,你還可以插入代表自定義數據源的自己的Realm實現。

Session Manager:會話管理器

SessionDAO:會話操作接口,在shiro.session.mgt.eis包中,提供了一個抽象類AbstractSessionDAO,和三個實現類CachingSessionDAO(session緩存操作類),MemorySessionDAO(這個應該是使用web的session,未驗證),RedisSessionDAO(集成redis管理會話)

CacheManager:緩存管理器,下面提供了系統默認緩存,應該是使用jvm緩存操作的類,shiro-ehcache包中提供的ehcache緩存操作EhCacheManager和shiro-redis包中提供了RedisCacheManager redis緩存操作的封裝

cryptography : shiro提供了相比於java內置加密更簡便使用的密碼學工具

shiro架構圖

三、具體化

經過上述的過程,大家估計會對shiro的架構有了一些瞭解,做一個形象的比喻,我們可以把整個shiro看做一臺筆記本電腦,shiro的核心組件看做電腦中的零件,比如可以把CacheManager看做電腦的顯卡,如果開啓一些大型軟件(很多訪問量),時間一長必然會造成散熱降頻卡頓(系統卡頓、死機,佔用大量jvm緩存),這時,我們可以選擇外置顯卡來解決這一問題(引入第三方緩存redis或者EhCache)。高度自由化的配置和默認拿來即用理念,這是我對shiro架構的理解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章