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文章
2706瀏覽量
47468 -
接口
+關注
關注
33文章
8596瀏覽量
151146 -
框架
+關注
關注
0文章
403瀏覽量
17484 -
數據中心
+關注
關注
16文章
4778瀏覽量
72123
發布評論請先 登錄
相關推薦
評論