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

基于共識(shí)算法的輕量級(jí)輪轉(zhuǎn)CA認(rèn)證方案
原創(chuàng)分享:自制輕量級(jí)單片機(jī)UI框架

一個(gè)高并發(fā)、輕量級(jí)的信息泄露掃描工具BBScan
SpringBoot使用Sa-Token-Quick-Login插件實(shí)現(xiàn)快速登錄認(rèn)證
一個(gè)純Python編寫的輕量級(jí)數(shù)據(jù)庫
測(cè)評(píng)分享 | 如何在先楫HPM6750上運(yùn)行輕量級(jí)AI推理框架TinyMaix

基于Python 輕量級(jí)ORM框架

評(píng)論