一文學(xué)會使用sa-token解決網(wǎng)站權(quán)限驗(yàn)證
sa-token是什么?
sa-token是一個JavaWeb輕量級權(quán)限認(rèn)證框架,其API調(diào)用非常簡單,有多簡單呢?以登錄驗(yàn)證為例,你只需要:
// 在登錄時寫入當(dāng)前會話的賬號id StpUtil.setLoginId(10001); // 然后在任意需要校驗(yàn)登錄處調(diào)用以下API // --- 如果當(dāng)前會話未登錄,這句代碼會拋出 `NotLoginException`異常 StpUtil.checkLogin();
沒有復(fù)雜的封裝!不要任何的配置!只需這兩行簡單的調(diào)用,即可輕松完成系統(tǒng)登錄鑒權(quán)!
與其它權(quán)限認(rèn)證框架相比,sa-token
盡力保證兩點(diǎn):
- 上手簡單:能自動化的配置全部自動化,不讓你費(fèi)腦子
- 功能強(qiáng)大:能涵蓋的功能全部涵蓋,不讓你用個框架還要自己給框架打各種補(bǔ)丁
如果上面的示例能夠證明sa-token
的簡單,那么以下API則可以證明sa-token
的強(qiáng)大
StpUtil.setLoginId(10001); // 標(biāo)記當(dāng)前會話登錄的賬號id StpUtil.getLoginId(); // 獲取當(dāng)前會話登錄的賬號id StpUtil.isLogin(); // 獲取當(dāng)前會話是否已經(jīng)登錄, 返回true或false StpUtil.logout(); // 當(dāng)前會話注銷登錄 StpUtil.logoutByLoginId(10001); // 讓賬號為10001的會話注銷登錄(踢人下線) StpUtil.hasRole("super-admin"); // 查詢當(dāng)前賬號是否含有指定角色標(biāo)識, 返回true或false StpUtil.hasPermission("user:add"); // 查詢當(dāng)前賬號是否含有指定權(quán)限, 返回true或false StpUtil.getSession(); // 獲取當(dāng)前賬號id的Session StpUtil.getSessionByLoginId(10001); // 獲取賬號id為10001的Session StpUtil.getTokenValueByLoginId(10001); // 獲取賬號id為10001的token令牌值
涵蓋功能
- 登錄驗(yàn)證 —— 輕松登錄鑒權(quán),并提供五種細(xì)分場景值
- 權(quán)限驗(yàn)證 —— 攔截違規(guī)調(diào)用,不同角色不同授權(quán)
- Session會話 —— 專業(yè)的數(shù)據(jù)緩存中心
- 踢人下線 —— 將違規(guī)用戶立刻清退下線
- 模擬他人賬號 —— 實(shí)時操作任意用戶狀態(tài)數(shù)據(jù)
- 持久層擴(kuò)展 —— 可集成redis、MongoDB等專業(yè)緩存中間件
- 多賬號認(rèn)證體系 —— 比如一個商城項(xiàng)目的user表和admin表分開鑒權(quán)
- 無Cookie模式 —— APP、小程序等前后臺分離場景
- 注解式鑒權(quán) —— 優(yōu)雅的將鑒權(quán)與業(yè)務(wù)代碼分離
- 花式token生成 —— 內(nèi)置六種token風(fēng)格,還可自定義token生成策略
- 自動續(xù)簽 —— 提供兩種token過期策略,靈活搭配使用,還可自動續(xù)簽
- 組件自動注入 —— 零配置與Spring等框架集成
- 更多功能正在集成中... —— 如有您有好想法或者建議,歡迎加群交流
- ...
SpringBoot集成示例
1、創(chuàng)建項(xiàng)目
在IDE中新建一個Springboot項(xiàng)目,例如:sa-token-demo-springboot
(不會的同學(xué)請自行百度或者參考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、配置文件
- 你可以零配置啟動項(xiàng)目
- 但同時你也可以在
application.yml
中增加如下配置,定制性使用框架:
spring: # sa-token配置 sa-token: # token名稱 (同時也是cookie名稱) token-name: satoken # token有效期,單位s 默認(rèn)30天, -1代表永不過期 timeout: 2592000 # token臨時有效期 (指定時間內(nèi)無操作就視為token過期) 單位: 秒 activity-timeout: -1 # 是否允許同一賬號并發(fā)登錄 (為true時允許一起登錄, 為false時新登錄擠掉舊登錄) allow-concurrent-login: false # 在多人登錄同一賬號時,是否共用一個token (為true時所有登錄共用一個token, 為false時每次登錄新建一個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("啟動成功:sa-token配置如下:" + SaTokenManager.getConfig()); } }
5、運(yùn)行
運(yùn)行代碼,當(dāng)你從控制臺看到類似下面的內(nèi)容時,就代表框架已經(jīng)成功集成了
倉庫地址
- 官網(wǎng)文檔:http://sa-token.dev33.cn/
- Gitee開源地址: https://gitee.com/sz6/sa-token
- GitHub開源地址: https://github.com/click33/sa-token
以上就是一文學(xué)會使用sa-token解決網(wǎng)站權(quán)限驗(yàn)證的詳細(xì)內(nèi)容,更多關(guān)于sa-token網(wǎng)站權(quán)限驗(yàn)證的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java向下轉(zhuǎn)型基礎(chǔ)知識點(diǎn)及實(shí)例
在本篇文章里小編給大家整理的是一篇關(guān)于java向下轉(zhuǎn)型基礎(chǔ)知識點(diǎn)及實(shí)例內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-05-05springboot使用redis緩存亂碼(key或者value亂碼)的解決
在通過springboot緩存數(shù)據(jù)的時候,發(fā)現(xiàn)key是一堆很不友好的東西,本文主要介紹了springboot使用redis緩存亂碼(key或者value亂碼)的解決,感興趣的可以了解一下2023-11-11SpringBoot+Redis實(shí)現(xiàn)數(shù)據(jù)字典的方法
這篇文章主要介紹了SpringBoot+Redis實(shí)現(xiàn)數(shù)據(jù)字典的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10Java使用application.property讀取文件里面的值
本文通過實(shí)例代碼給大家介紹了Java使用application.property讀取文件里面的值,需要的朋友可以參考下2018-10-10淺析Java中靜態(tài)代理和動態(tài)代理的應(yīng)用與區(qū)別
代理模式在我們生活中很常見,而Java中常用的兩個的代理模式就是動態(tài)代理與靜態(tài)代理,這篇文章主要為大家介紹了二者的應(yīng)用與區(qū)別,需要的可以參考下2023-08-08Java面試題及答案集錦(基礎(chǔ)題122道,代碼題19道)
本文是小編收集整理的關(guān)于java基礎(chǔ)面試題及答案集錦,基礎(chǔ)題目有122道,代碼題目有19道,非常不錯,值得收藏,需要的朋友參考下2017-01-01IO流:java中解碼和編碼出現(xiàn)亂碼說明以及代碼實(shí)現(xiàn)方法
最近使用Java編寫一些讀取文件的小工具的時候,經(jīng)常與IO流打交道,但是自己對IO流的理解不是特別深刻,趁機(jī)整理下,這篇文章主要給大家介紹了關(guān)于IO流:java中解碼和編碼出現(xiàn)亂碼說明以及代碼實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2023-11-11Java Fluent Mybatis 項(xiàng)目工程化與常規(guī)操作詳解流程篇 下
Java中常用的ORM框架主要是mybatis, hibernate, JPA等框架。國內(nèi)又以Mybatis用的多,基于mybatis上的增強(qiáng)框架,又有mybatis plus和TK mybatis等。今天我們介紹一個新的mybatis增強(qiáng)框架 fluent mybatis關(guān)于項(xiàng)目工程化與常規(guī)操作流程2021-10-10