Java有很多優秀的權限認證框架,如Apache Shiro、Spring Security等,但是集成起來實在是有些復雜;今天給大家介紹一個輕量級的權限認證框架:Sa-Token,只需引入依賴即可使用,接下來讓我們進一步了解它。
初識sa-token
Sa-Token 是一個輕量級 Java 權限認證框架,旨在以簡單、優雅的方式完成系統的權限認證部分,主要解決: 登錄認證 、 權限認證 、 單點登錄 、 OAuth2.0 、 分布式Session會話 、微服務網關鑒權 等一系列權限相關問題。

sa-token
Sa-Token 功能
Sa-Token 目前主要五大功能模塊:登錄認證、權限認證、單點登錄、OAuth2.0、微服務鑒權。
- 登錄認證 —— 單端登錄、多端登錄、同端互斥登錄、七天內免登錄
- 權限認證 —— 權限認證、角色認證、會話二級認證
- Session會話 —— 全端共享Session、單端獨享Session、自定義Session
- 踢人下線 —— 根據賬號id踢人下線、根據Token值踢人下線
- 賬號封禁 —— 登錄封禁、按照業務分類封禁、按照處罰階梯封禁
- 持久層擴展 —— 可集成Redis、Memcached等專業緩存中間件,重啟數據不丟失
- 分布式會話 —— 提供jwt集成、共享數據中心兩種分布式會話方案
- 微服務網關鑒權 —— 適配Gateway、ShenYu、Zuul等常見網關的路由攔截認證
- 單點登錄 —— 內置三種單點登錄模式:無論是否跨域、是否共享Redis,都可以搞定
- OAuth2.0認證 —— 輕松搭建 OAuth2.0 服務,支持openid模式
- 二級認證 —— 在已登錄的基礎上再次認證,保證安全性
- Basic認證 —— 一行代碼接入 Http Basic 認證
- 獨立Redis —— 將權限緩存與業務緩存分離
- 臨時Token認證 —— 解決短時間的Token授權問題
- 模擬他人賬號 —— 實時操作任意用戶狀態數據
- 臨時身份切換 —— 將會話身份臨時切換為其它賬號
- 前后端分離 —— APP、小程序等不支持Cookie的終端
- 同端互斥登錄 —— 像QQ一樣手機電腦同時在線,但是兩個手機上互斥登錄
- 多賬號認證體系 —— 比如一個商城項目的user表和admin表分開鑒權
- Token風格定制 —— 內置六種Token風格,還可:自定義Token生成策略、自定義Token前綴
- 注解式鑒權 —— 優雅的將鑒權與業務代碼分離
- 路由攔截式鑒權 —— 根據路由攔截鑒權,可適配restful模式
- 自動續簽 —— 提供兩種Token過期策略,靈活搭配使用,還可自動續簽
- 會話治理 —— 提供方便靈活的會話查詢接口
- 記住我模式 —— 適配[記住我]模式,重啟瀏覽器免驗證
- 密碼加密 —— 提供密碼加密模塊,可快速MD5、SHA1、SHA256、AES、RSA加密
- 全局偵聽器 —— 在用戶登陸、注銷、被踢下線等關鍵性操作時進行一些AOP操作
- 開箱即用 —— 提供SpringMVC、WebFlux等常見web框架starter集成包,真正的開箱即用
簡單示例
1、引入依賴
注:如果你使用的是
SpringBoot 3.x,只需要將sa-token-spring-boot-starter修改為sa-token-spring-boot3-starter即可。
< !-- Sa-Token 權限認證,1.34.0 已是最新版本 -- >
< dependency >
< groupId >cn.dev33< /groupId >
< artifactId >sa-token-spring-boot-starter< /artifactId >
< version >1.34.0< /version >
< /dependency >
yaml配置
server:
# 端口
port: 8081
sa-token:
# token名稱 (同時也是cookie名稱)
token-name: satoken
# 用 sa-token 默認的配置即可,也可根據業務自行修改
2、編寫測試代碼
@RestController
@RequestMapping("/user/")
public class UserController {
@RequestMapping("doLogin")
public String doLogin(String username, String password) {
if("zhang".equals(username) && "123456".equals(password)) {
StpUtil.login(10001);
return "登錄成功";
}
return "登錄失敗";
}
@RequestMapping("isLogin")
public String isLogin() {
return "當前會話是否登錄:" + StpUtil.isLogin();
}
}
3、測試
啟動代碼,從瀏覽器依次訪問上述測試接口


小結
看得出來,比起Shiro、SpringSecurity這些被廣泛使用的鑒權項目,這個項目的集成使用方式可以簡單到令人發指。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
模塊
+關注
關注
7文章
2847瀏覽量
53416 -
接口
+關注
關注
33文章
9576瀏覽量
157530 -
框架
+關注
關注
0文章
404瀏覽量
18483 -
數據中心
+關注
關注
18文章
5729瀏覽量
75174
發布評論請先 登錄
相關推薦
熱點推薦
一個面向嵌入式系統的輕量級框架
mr-library 是一個面向嵌入式系統的輕量級框架,提供統一的底層驅動設備模型以及基礎服務功能,具有模塊化設計、可配置性和擴展性的特點,
發表于 09-01 12:22
?1178次閱讀
面向嵌入式系統的輕量級框架mr-library簡介
mr-library 是一個面向嵌入式系統的輕量級框架,提供統一的底層驅動設備模型以及基礎服務功能,具有模塊化設計、可配置性和擴展性的特點,
發表于 09-15 10:35
?2697次閱讀
輕量級的ui框架如何去制作
原創分享:自制輕量級單片機UI框架框架元素用戶接口代碼開源平時常看csdn,但是從來沒有自己寫過。正好這幾天需要用單片機做一個簡易的ui界面,于是自己寫了
發表于 07-14 07:39
Dllite_micro (輕量級的 AI 推理框架)
DLLite-Micro 是一個輕量級的 AI 推理框架,可以為 OpenHarmony OS 的輕量設備和小型設備提供深度模型的推理能力DLLite-Micro 向開發者提供清晰、易
發表于 08-05 11:40
基于動態AOP 和WebServices 的輕量級RBAC
針對傳統基于角色的訪問控制系統在面向中小企業應用中的不足,設計了一個面向中小企業的基于WebServices 的輕量級RBAC 系統。利用動態AOP 技術將權限驗證實現為方面,通過對W
發表于 06-18 11:00
?16次下載
基于同步數的輕量級高效RFID身份認證協議
的輕量級高效RFID身份認證協議。協議運用同步數以及雙向認證機制保障系統安全性。對各種威脅進行分析,確保了協議的安全性。通過比較其他協議的效率與成本,可以看出該協議具有輕量級與高效性。
發表于 12-01 14:19
?1次下載
基于共識算法的輕量級輪轉CA認證方案
自組織網絡難以進行復雜的認證。針對該問題,結合輕量級證書頒發機構(CA)認證思想,借鑒區塊鏈技術中的共識機制來選舉CA,提出一種基于共識算法的輕量級
發表于 06-01 15:41
?4次下載
原創分享:自制輕量級單片機UI框架
原創分享:自制輕量級單片機UI框架框架元素用戶接口代碼開源平時常看csdn,但是從來沒有自己寫過。正好這幾天需要用單片機做一個簡易的ui界面,于是自己寫了
發表于 11-05 15:20
?31次下載
SpringBoot使用Sa-Token-Quick-Login插件實現快速登錄認證
Sa-Token-Quick-Login 可以為一個系統快速的、零代碼 注入一個登錄頁面
測評分享 | 如何在先楫HPM6750上運行輕量級AI推理框架TinyMaix
本期內容由先楫開發者社區大咖@xusiwei1236分享基于先楫HPM6750的輕量級AI推理框架,趕緊來瞧瞧~一、TinyMaix是什么?TinyMaix是國內sipeed團隊開發一
基于Python 輕量級ORM框架
ORM框架使用最廣泛的就是SQLAlchemy和Django自帶的ORM框架,但是SQLAlchemy的語法顯然相對Django的ORM框架麻煩一點。 而Django本身是
一個輕量級的權限認證框架:Sa-Token
評論