韩日无码在线,亚洲鸥美日韩精品久久,日本一区二区福利,最新无码专区

首頁 - 關于研博 - 技術筆記 - Sa-Token
Sa-Token
2024.10.18

  1.Sa-Token 介紹

  Sa-Token是一個輕量級 Java 權限認證框架,主要解決:登錄認證、權限認證、單點登錄、OAuth2.0、分布式Session會話、微服務網(wǎng)關鑒權 等一系列權限相關問題。

  Sa-Token 旨在以簡單、優(yōu)雅的方式完成系統(tǒng)的權限認證部分,以登錄認證為例,你只需要:

 

  無需實現(xiàn)任何接口,無需創(chuàng)建任何配置文件,只需要這一句靜態(tài)代碼的調(diào)用,便可以完成會話登錄認證。

  如果一個接口需要登錄后才能訪問,我們只需調(diào)用以下代碼:

 

  權限認證:

 

  當你受夠 Shiro、SpringSecurity 等框架的三拜九叩之后,你就會明白,相對于這些傳統(tǒng)老牌框架,Sa-Token 的 API 設計是多么的簡單、優(yōu)雅!

 

  2.Sa-Token組件介紹

  2.1 SaManager

  管理 Sa-Token 所有全局組件,可通過此類快速獲取、寫入各種全局組件對象。SaManager的結構如下,其中這些屬性就是Sa-Token最重要的組件了,下面挑出幾個細講一下。

 

  2.2 SaTokenConfig

  config包下除了SaTokenConfig還有SaSignConfig、SaCookieConfig、SaTokenConfigFactory。前三個屬于配置類,最后一個Factory是用于非IOC環(huán)境下使用的類。SaTokenConfig部分截圖如下。

 

  2.3 SaTokenDao

  SaTokenDao 是數(shù)據(jù)持久層接口,負責所有會話數(shù)據(jù)的底層寫入和讀取。

  正如次,此接口設計了如下一些操作數(shù)據(jù)讀取與寫入的方法,注意其中包含抽象方法、默認實現(xiàn)方法和默認空實現(xiàn)方法。

 

  與SaTokenDao同dao包下還有一個默認實現(xiàn)類SaTokenDaoDefaultImpl,當然除此之外還有很多其他實現(xiàn)在插件工程里。

  默認實現(xiàn)SaTokenDaoDefaultImpl:Sa-Token 持久層接口,默認實現(xiàn)類(基于內(nèi)存 Map,系統(tǒng)重啟后數(shù)據(jù)丟失)。所以在不引入其他如Redis需要注意重啟丟失的問題。

 

  2.4 StpInterface

  因為每個項目的需求不同,其權限設計也千變?nèi)f化,因此 [ 獲取當前賬號權限碼集合 ] 這一操作不可能內(nèi)置到框架中, 所以 Sa-Token 將此操作以接口的方式暴露給你,以方便你根據(jù)自己的業(yè)務邏輯進行重寫。

 

  2.5 SaTokenContext與SaTokenSecondContext

  官方描述:上下文處理器封裝了當前應用環(huán)境的底層操作,是 Sa-Token 對接不同 web 框架的關鍵。目前 Sa-Token 僅對 SpringBoot、SpringMVC、WebFlux、Solon 等部分 Web 框架制作了 Starter 集成包, 如果我們使用的 Web 框架不在上述列表之中,則需要自定義 SaTokenContext 接口的實現(xiàn)完成整合工作。

  core工程context包下的結構是這樣的,其中SaHolder是Sa-Token 上下文持有類,你可以通過此類快速獲取當前環(huán)境下的 SaRequest、SaResponse、SaStorage、SaApplication 對象。

 

  對應上官方所說對接不同web框架,SaTokenContext的實現(xiàn)有下,當然對于我們使用最多的可能就是SaTokenContextForString了。

 

  3.Sa-Token組件注冊

  簡單介紹了Sa-Token的組件,就要思考這些組件在項目中是如何使用的?如何管理的?

  3.1環(huán)境聲明

  這里針對如下環(huán)境來講一下

  3.2 依賴關系

  他們分別對應有如下依賴。

  

 

  3.3 sa-token-servlet

 

  sa-token-servlet僅僅是實現(xiàn)了前面context章節(jié)的SaStorage、SaRequest、SaResponse接口,并定義了一些錯誤碼。

  3.4 sa-token-spring-boot-starter

 

  sa-token-spring-boot-starter也很簡單,關于SpringBoot的自動裝配原理就不多講了,這里看resource/META-INF/spring.factories文件,其實SpringBoot2.7之后就換了,下面會提到。

 

  這里表示自動注入的是SaTokenContextRegister。

  1、注入了SaTokenContextForSpring前面也有提到,其就是在SpringMVC環(huán)境下的上下文處理器,針對處理sa-token-servlet實現(xiàn)的context;

  2、注入了SaPathCheckFilterForServlet路徑檢查過濾器,自己可查看其代碼,這里略過。

 

  3.5 sa-token-redisson-jackson

 

  好了,sa-token-spring-boot-starter解決了確定context的問題。

  sa-token-redisson-jackson要解決SaTokenDao持久層實現(xiàn)的問題。前面提到SaTokenDao有很多實現(xiàn),默認實現(xiàn)在內(nèi)存中存儲數(shù)據(jù),這里使用了redisson。

  可以看到resource/META-INF/不僅有spring.factories還有spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,這就是SpringBoot2.7前后自動裝配的差別,有機會可以再探討一下。

  resource/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports內(nèi)容如下

 

  這里注入的是SaTokenDaoRedissonJackson,是SaTokenDao的一個實現(xiàn)類,其中SaSessionForJacksonCustomized是SaSession的Jackson序列化實現(xiàn)類。

  3.6 sa-token-spring-boot-autoconfig

  重頭戲來了!!!

  前面那么多東西都要在這里串起來了。

 

  resource/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports內(nèi)容如下

 

  3.6.1 SaBeanRegister

  通過spring配置文件前綴為Sa-Token讀取SaTokenConfig屬性注入

 

  3.6.2 SaBeanInject

 

  觀察SaBeanInject的結構,注意到其只有一個構造器,剩下的都是空返回的set方法而這些方法入?yún)⒍寂c前面的SaManager里的組件幾乎完全對應。

  首先看這個構造器,通過調(diào)用SaManager的靜態(tài)方法來設置的。

 

  不知道你還記不記得前面介紹SaManager的定義:管理 Sa-Token 所有全局組件,可通過此類快速獲取、寫入各種全局組件對象。

  回過頭來看SaManager的屬性是怎么定義的,public volatile static SaTokenConfig config;保證了多線程環(huán)境下的可見性和有序性。也就是SaTokenConfig被更新后,其他線程能立刻看到變量更新。另外在getConfig方法也使用了同步塊確保線程安全地獲取config對象。

 

  可以說SaBeanInject是幫助SaManager設置屬性的重要類,是之后直接使用StpUtil、StpLogic等靜態(tài)類的靜態(tài)方法的基礎。

獲取相關資料
下載地址將會發(fā)送至您填寫的郵箱
相關新聞
水文SL651協(xié)議解析
2025-01-17
JT/T808 協(xié)議解析
2025-01-10
環(huán)保HJ212-2017協(xié)議介紹開發(fā)
2025-01-03
  • 在線客服
  • 電話咨詢
  • 微信
  • 短視頻
  • 乐播国产精品一区二区| 自由成熟X色视频| 久久久久久久岛国综合免费观看| 欧美a一级国产黄片| 欧洲无码一区二区三区在线观看| 中文字幕日本视频| 动漫欧美精品一区二区| 97se亚洲国产综合自在线国产| 欧美亚洲成人精品国产| 亚洲无码精品在线| 熟妇色网| 日韩无码福利视频| 久久久久久三级片网| 性欧美大战久久久| 国产精品一区二区在线观看不卡 | 亚洲三及片一区二区| 女同同性av| 久久精品島國av一區二區無碼| 欧美色宅男一区| 午夜性爽男人的天堂视频| 激情综合网91| 成人影院vs一区二区| 免费熟女视频91| 天天躁日日躁狠狠躁一区| 欧美一级乳乱中文字幕| 国产尤物视频在线| sss久久久无码| 欧美激情久久综合| 天堂va欧美va亚洲va| 色欲探花国产精品| 伊人中文字幕亚洲| 亚洲欧洲日韩成人电影| 日韩v亚洲v欧美V精品| 色综合 波多| 99精品国产在热久久婷婷| 男人捅女人30-40分钟| 国产美女狂喷水潮在线播放 | 清一色日本视频网| 中文字幕亚洲一区二区三区四区 | 色咪咪国产在线| 亚洲人成网站在线播放942 |