sa-token是什么谆棱?
sa-token是一個(gè)JavaWeb輕量級(jí)權(quán)限認(rèn)證框架叶组,其API調(diào)用非常簡(jiǎn)單拯田,有多簡(jiǎn)單呢?以登錄驗(yàn)證為例甩十,你只需要:
// 在登錄時(shí)寫入當(dāng)前會(huì)話的賬號(hào)id
StpUtil.setLoginId(10001);
// 然后在任意需要校驗(yàn)登錄處調(diào)用以下API
// --- 如果當(dāng)前會(huì)話未登錄船庇,這句代碼會(huì)拋出 `NotLoginException`異常
StpUtil.checkLogin();
沒有復(fù)雜的封裝!不要任何的配置侣监!只需這兩行簡(jiǎn)單的調(diào)用鸭轮,即可輕松完成系統(tǒng)登錄鑒權(quán)!
與其它權(quán)限認(rèn)證框架相比橄霉,sa-token
盡力保證兩點(diǎn):
- 上手簡(jiǎn)單:能自動(dòng)化的配置全部自動(dòng)化窃爷,不讓你費(fèi)腦子
- 功能強(qiáng)大:能涵蓋的功能全部涵蓋,不讓你用個(gè)框架還要自己給框架打各種補(bǔ)丁
如果上面的示例能夠證明sa-token
的簡(jiǎn)單姓蜂,那么以下API則可以證明sa-token
的強(qiáng)大
StpUtil.setLoginId(10001); // 標(biāo)記當(dāng)前會(huì)話登錄的賬號(hào)id
StpUtil.getLoginId(); // 獲取當(dāng)前會(huì)話登錄的賬號(hào)id
StpUtil.isLogin(); // 獲取當(dāng)前會(huì)話是否已經(jīng)登錄, 返回true或false
StpUtil.logout(); // 當(dāng)前會(huì)話注銷登錄
StpUtil.logoutByLoginId(10001); // 讓賬號(hào)為10001的會(huì)話注銷登錄(踢人下線)
StpUtil.hasRole("super-admin"); // 查詢當(dāng)前賬號(hào)是否含有指定角色標(biāo)識(shí), 返回true或false
StpUtil.hasPermission("user:add"); // 查詢當(dāng)前賬號(hào)是否含有指定權(quán)限, 返回true或false
StpUtil.getSession(); // 獲取當(dāng)前賬號(hào)id的Session
StpUtil.getSessionByLoginId(10001); // 獲取賬號(hào)id為10001的Session
StpUtil.getTokenValueByLoginId(10001); // 獲取賬號(hào)id為10001的token令牌值
涵蓋功能
- 登錄驗(yàn)證 —— 輕松登錄鑒權(quán)按厘,并提供五種細(xì)分場(chǎng)景值
- 權(quán)限驗(yàn)證 —— 攔截違規(guī)調(diào)用,不同角色不同授權(quán)
- Session會(huì)話 —— 專業(yè)的數(shù)據(jù)緩存中心
- 踢人下線 —— 將違規(guī)用戶立刻清退下線
- 模擬他人賬號(hào) —— 實(shí)時(shí)操作任意用戶狀態(tài)數(shù)據(jù)
- 持久層擴(kuò)展 —— 可集成redis钱慢、MongoDB等專業(yè)緩存中間件
- 多賬號(hào)認(rèn)證體系 —— 比如一個(gè)商城項(xiàng)目的user表和admin表分開鑒權(quán)
- 無(wú)Cookie模式 —— APP逮京、小程序等前后臺(tái)分離場(chǎng)景
- 注解式鑒權(quán) —— 優(yōu)雅的將鑒權(quán)與業(yè)務(wù)代碼分離
- 花式token生成 —— 內(nèi)置六種token風(fēng)格,還可自定義token生成策略
- 自動(dòng)續(xù)簽 —— 提供兩種token過期策略束莫,靈活搭配使用懒棉,還可自動(dòng)續(xù)簽
- 組件自動(dòng)注入 —— 零配置與Spring等框架集成
- 更多功能正在集成中... —— 如有您有好想法或者建議,歡迎加群交流
- ...
SpringBoot集成示例
1览绿、創(chuàng)建項(xiàng)目
在IDE中新建一個(gè)Springboot項(xiàng)目策严,例如:sa-token-demo-springboot
(不會(huì)的同學(xué)請(qǐng)自行百度或者參考github示例)
2、設(shè)置jar包依賴
- 在
pom.xml
中添加依賴:
<!-- sa-token 權(quán)限認(rèn)證, 在線文檔:http://sa-token.dev33.cn/ -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.8.0</version>
</dependency>
3饿敲、配置文件
- 你可以零配置啟動(dòng)項(xiàng)目
- 但同時(shí)你也可以在
application.yml
中增加如下配置妻导,定制性使用框架:
spring:
# sa-token配置
sa-token:
# token名稱 (同時(shí)也是cookie名稱)
token-name: satoken
# token有效期,單位s 默認(rèn)30天, -1代表永不過期
timeout: 2592000
# token臨時(shí)有效期 (指定時(shí)間內(nèi)無(wú)操作就視為token過期) 單位: 秒
activity-timeout: -1
# 是否允許同一賬號(hào)并發(fā)登錄 (為true時(shí)允許一起登錄, 為false時(shí)新登錄擠掉舊登錄)
allow-concurrent-login: false
# 在多人登錄同一賬號(hào)時(shí)诀蓉,是否共用一個(gè)token (為true時(shí)所有登錄共用一個(gè)token, 為false時(shí)每次登錄新建一個(gè)token)
is-share: false
# token風(fēng)格
token-style: uuid
- 如果你習(xí)慣于
application.properties
類型的配置文件栗竖,那也很好辦: - 百度: springboot properties與yml 配置文件的區(qū)別
4、創(chuàng)建主類
在項(xiàng)目中新建包 com.pj
渠啤,在此包內(nèi)新建主類 SaTokenDemoApplication.java
,輸入以下代碼:
@SpringBootApplication
public class SaTokenDemoApplication {
public static void main(String[] args) throws JsonProcessingException {
SpringApplication.run(SaTokenDemoApplication.class, args); // run-->
System.out.println("啟動(dòng)成功:sa-token配置如下:" + SaTokenManager.getConfig());
}
}
5添吗、運(yùn)行
運(yùn)行代碼沥曹,當(dāng)你從控制臺(tái)看到類似下面的內(nèi)容時(shí),就代表框架已經(jīng)成功集成了
image
倉(cāng)庫(kù)地址
- github:https://github.com/click33/sa-token
- gitee: https://gitee.com/sz6/sa-token
- 官網(wǎng)文檔:http://sa-token.dev33.cn/