Java有很多優(yōu)秀的權(quán)限認(rèn)證框架,如Apache Shiro
、Spring Security
等,但是集成起來實在是有些復(fù)雜;今天給大家介紹一個輕量級的權(quán)限認(rèn)證框架:Sa-Token,只需引入依賴即可使用,接下來讓我們進一步了解它。
初識sa-token
Sa-Token 是一個輕量級 Java 權(quán)限認(rèn)證框架,旨在以簡單、優(yōu)雅的方式完成系統(tǒng)的權(quán)限認(rèn)證部分,主要解決: 登錄認(rèn)證 、 權(quán)限認(rèn)證 、 單點登錄 、 OAuth2.0 、 分布式Session會話 、微服務(wù)網(wǎng)關(guān)鑒權(quán) 等一系列權(quán)限相關(guān)問題。
sa-token
Sa-Token 功能
Sa-Token 目前主要五大功能模塊:登錄認(rèn)證、權(quán)限認(rèn)證、單點登錄、OAuth2.0、微服務(wù)鑒權(quán)。
- 登錄認(rèn)證 —— 單端登錄、多端登錄、同端互斥登錄、七天內(nèi)免登錄
- 權(quán)限認(rèn)證 —— 權(quán)限認(rèn)證、角色認(rèn)證、會話二級認(rèn)證
- Session會話 —— 全端共享Session、單端獨享Session、自定義Session
- 踢人下線 —— 根據(jù)賬號id踢人下線、根據(jù)Token值踢人下線
- 賬號封禁 —— 登錄封禁、按照業(yè)務(wù)分類封禁、按照處罰階梯封禁
- 持久層擴展 —— 可集成Redis、Memcached等專業(yè)緩存中間件,重啟數(shù)據(jù)不丟失
- 分布式會話 —— 提供jwt集成、共享數(shù)據(jù)中心兩種分布式會話方案
- 微服務(wù)網(wǎng)關(guān)鑒權(quán) —— 適配Gateway、ShenYu、Zuul等常見網(wǎng)關(guān)的路由攔截認(rèn)證
- 單點登錄 —— 內(nèi)置三種單點登錄模式:無論是否跨域、是否共享Redis,都可以搞定
- OAuth2.0認(rèn)證 —— 輕松搭建 OAuth2.0 服務(wù),支持openid模式
- 二級認(rèn)證 —— 在已登錄的基礎(chǔ)上再次認(rèn)證,保證安全性
- Basic認(rèn)證 —— 一行代碼接入 Http Basic 認(rèn)證
- 獨立Redis —— 將權(quán)限緩存與業(yè)務(wù)緩存分離
- 臨時Token認(rèn)證 —— 解決短時間的Token授權(quán)問題
- 模擬他人賬號 —— 實時操作任意用戶狀態(tài)數(shù)據(jù)
- 臨時身份切換 —— 將會話身份臨時切換為其它賬號
- 前后端分離 —— APP、小程序等不支持Cookie的終端
- 同端互斥登錄 —— 像QQ一樣手機電腦同時在線,但是兩個手機上互斥登錄
- 多賬號認(rèn)證體系 —— 比如一個商城項目的user表和admin表分開鑒權(quán)
- Token風(fēng)格定制 —— 內(nèi)置六種Token風(fēng)格,還可:自定義Token生成策略、自定義Token前綴
- 注解式鑒權(quán) —— 優(yōu)雅的將鑒權(quán)與業(yè)務(wù)代碼分離
- 路由攔截式鑒權(quán) —— 根據(jù)路由攔截鑒權(quán),可適配restful模式
- 自動續(xù)簽 —— 提供兩種Token過期策略,靈活搭配使用,還可自動續(xù)簽
- 會話治理 —— 提供方便靈活的會話查詢接口
- 記住我模式 —— 適配[記住我]模式,重啟瀏覽器免驗證
- 密碼加密 —— 提供密碼加密模塊,可快速MD5、SHA1、SHA256、AES、RSA加密
- 全局偵聽器 —— 在用戶登陸、注銷、被踢下線等關(guān)鍵性操作時進行一些AOP操作
- 開箱即用 —— 提供SpringMVC、WebFlux等常見web框架starter集成包,真正的開箱即用
簡單示例
1、引入依賴
注:如果你使用的是
SpringBoot 3.x
,只需要將sa-token-spring-boot-starter
修改為sa-token-spring-boot3-starter
即可。
< !-- Sa-Token 權(quán)限認(rèn)證,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 默認(rèn)的配置即可,也可根據(jù)業(yè)務(wù)自行修改
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 "當(dāng)前會話是否登錄:" + StpUtil.isLogin();
}
}
3、測試
啟動代碼,從瀏覽器依次訪問上述測試接口
小結(jié)
看得出來,比起Shiro、SpringSecurity這些被廣泛使用的鑒權(quán)項目,這個項目的集成使用方式可以簡單到令人發(fā)指。
-
模塊
+關(guān)注
關(guān)注
7文章
2695瀏覽量
47431 -
接口
+關(guān)注
關(guān)注
33文章
8575瀏覽量
151014 -
框架
+關(guān)注
關(guān)注
0文章
403瀏覽量
17474 -
數(shù)據(jù)中心
+關(guān)注
關(guān)注
16文章
4761瀏覽量
72030
發(fā)布評論請先 登錄
相關(guān)推薦
評論