初識(shí)sa-token及登錄授權(quán)簡(jiǎn)單實(shí)現(xiàn)
前言
在java的世界里,有很多優(yōu)秀的權(quán)限認(rèn)證框架,如Apache Shiro
、Spring Security
等等。這些框架背景強(qiáng)大,歷史悠久,其生態(tài)也比較齊全。
但同時(shí)這些框架也并非十分完美,在前后臺(tái)分離已成標(biāo)配的互聯(lián)網(wǎng)時(shí)代,這些老牌框架的很多設(shè)計(jì)理已經(jīng)相當(dāng)滯后,無(wú)法與我們的項(xiàng)目完美契合。
而今天我要介紹的這款框架,專(zhuān)門(mén)為前后臺(tái)分離架構(gòu)而生, 功能強(qiáng)大, 上手簡(jiǎn)單 —— sa-token。
sa-token 是什么?
sa-token是一個(gè)輕量級(jí)Java權(quán)限認(rèn)證框架,主要解決: 登錄認(rèn)證、權(quán)限認(rèn)證、Session會(huì)話(huà) 等一系列權(quán)限相關(guān)問(wèn)題
sa-token的API調(diào)用非常簡(jiǎn)單,一行代碼即可搞定登錄授權(quán),廢話(huà)不多說(shuō),我們直接上示例:
1. 添加pom依賴(lài)
<!-- sa-token 權(quán)限認(rèn)證, 在線(xiàn)文檔:http://sa-token.dev33.cn/ --> <dependency> <groupId>cn.dev33</groupId> <artifactId>sa-token-spring-boot-starter</artifactId> <version>1.12.0</version> </dependency>
2. 調(diào)用框架API進(jìn)行登錄
// 在用戶(hù)賬號(hào)密碼驗(yàn)證成功后,直接調(diào)用以下API進(jìn)行登錄授權(quán) StpUtil.setLoginId(10001);
至此,我們已經(jīng)借助sa-token框架完成登錄授權(quán)!
此時(shí)的你的小腦袋可能飄滿(mǎn)了問(wèn)號(hào),就這么簡(jiǎn)單?自定義Realm呢?全局過(guò)濾器呢?我不用寫(xiě)各種配置文件嗎?
事實(shí)上在此我可以負(fù)責(zé)的告訴你,在sa-token
中,登錄授權(quán)就是如此的簡(jiǎn)單,不需要什么全局過(guò)濾器,不需要各種亂七八糟的配置!只需要這一行簡(jiǎn)單的API調(diào)用,即可完成會(huì)話(huà)的登錄授權(quán)!
當(dāng)你受夠Shiro、Security等框架的三拜九叩之后,你就會(huì)明白,相對(duì)于這些傳統(tǒng)老牌框架,sa-token的API設(shè)計(jì)是多么的清爽!
拒絕引入復(fù)雜的概念,以實(shí)際業(yè)務(wù)需求為第一目標(biāo)進(jìn)行定向突破,業(yè)務(wù)上需要什么,sa-token就做什么,不搞各種云里霧里的高大上概念,以化繁為簡(jiǎn)為第一目標(biāo)!
除了以上的登錄授權(quán),sa-token還可以一行代碼完成以下功能:
StpUtil.setLoginId(10001); // 標(biāo)記當(dāng)前會(huì)話(huà)登錄的賬號(hào)id StpUtil.getLoginId(); // 獲取當(dāng)前會(huì)話(huà)登錄的賬號(hào)id StpUtil.isLogin(); // 獲取當(dāng)前會(huì)話(huà)是否已經(jīng)登錄, 返回true或false StpUtil.logout(); // 當(dāng)前會(huì)話(huà)注銷(xiāo)登錄 StpUtil.logoutByLoginId(10001); // 讓賬號(hào)為10001的會(huì)話(huà)注銷(xiāo)登錄(踢人下線(xiàn)) StpUtil.hasRole("super-admin"); // 查詢(xún)當(dāng)前賬號(hào)是否含有指定角色標(biāo)識(shí), 返回true或false StpUtil.hasPermission("user:add"); // 查詢(xún)當(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令牌值 StpUtil.setLoginId(10001, "PC"); // 指定設(shè)備標(biāo)識(shí)登錄 StpUtil.logoutByLoginId(10001, "PC"); // 指定設(shè)備標(biāo)識(shí)進(jìn)行強(qiáng)制注銷(xiāo) (不同端不受影響) StpUtil.switchTo(10044); // 將當(dāng)前會(huì)話(huà)身份臨時(shí)切換為其它賬號(hào)
sa-token的API眾多,請(qǐng)恕此處無(wú)法逐一為您展示,以上示例只是框架能力的很小一部分能力展示。
在sa-token
中,各種與登錄鑒權(quán)相關(guān)功能:踢人下線(xiàn)、自動(dòng)續(xù)簽、同端互斥登錄等常見(jiàn)業(yè)務(wù)均可以一行代碼調(diào)用實(shí)現(xiàn)
關(guān)于sa-token
的授權(quán)登錄先介紹至此,接下來(lái)的章節(jié)我會(huì)陸續(xù)介紹sa-token
框架的其它各種強(qiáng)大能力
如果覺(jué)得文章寫(xiě)得不錯(cuò)還請(qǐng)大家不要吝惜為文章點(diǎn)個(gè)贊,您的支持是我更新的最大動(dòng)力!
最后附上項(xiàng)目鏈接:
- 官網(wǎng)文檔:http://sa-token.dev33.cn/
- Gitee開(kāi)源地址: https://gitee.com/sz6/sa-token
- GitHub開(kāi)源地址: https://github.com/click33/sa-token
以上就是初識(shí)sa-token及登錄授權(quán)簡(jiǎn)單實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于sa-token登錄授權(quán)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 一文學(xué)會(huì)使用sa-token解決網(wǎng)站權(quán)限驗(yàn)證
- Sa-Token中的SaSession對(duì)象使用學(xué)習(xí)示例詳解
- Sa-Token記住我模式實(shí)現(xiàn)七天免登錄
- Sa-Token不同模式實(shí)現(xiàn)單地登錄?多地登錄?同端互斥登錄
- springboot 整合 sa-token簡(jiǎn)介及入門(mén)教程
- SpringBoot?使用?Sa-Token?完成注解鑒權(quán)功能(權(quán)限校驗(yàn))
- Java輕量級(jí)權(quán)限認(rèn)證框架Sa-Token的使用
- sa-token?路由攔截式鑒權(quán)使用示例詳解
相關(guān)文章
Spring使用@Autowired注解實(shí)現(xiàn)自動(dòng)裝配方式
這篇文章主要介紹了Spring使用@Autowired注解實(shí)現(xiàn)自動(dòng)裝配方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09spring boot 常見(jiàn)http請(qǐng)求url參數(shù)獲取方法
這篇文章主要介紹了spring boot 常見(jiàn)http請(qǐng)求url參數(shù)獲取,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03Spring Cloud Gateway打造可擴(kuò)展的微服務(wù)網(wǎng)關(guān)
微服務(wù)網(wǎng)關(guān)是一個(gè)位于客戶(hù)端和后端微服務(wù)之間的服務(wù)器,用于處理所有與客戶(hù)端的通信,Spring Cloud Gateway都是一個(gè)值得考慮的選擇,它將幫助您更好地管理和保護(hù)您的微服務(wù),感興趣的朋友一起看看吧2023-11-11Java實(shí)現(xiàn)Dijkstra算法的示例代碼
Dijkstra(迪杰斯特拉)算法是典型的單源最短路徑算法,用于計(jì)算一個(gè)節(jié)點(diǎn)到其他所有節(jié)點(diǎn)的最短路徑。本文主要介紹了實(shí)現(xiàn)這一算法的Java代碼,需要的可以參考一下2022-07-07java高級(jí)應(yīng)用:線(xiàn)程池的全面講解(干貨)
這篇文章主要介紹了java高級(jí)應(yīng)用:線(xiàn)程池的全面講解(干貨),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02Java多線(xiàn)程中的ThreadPoolExecutor使用解析
這篇文章主要介紹了Java多線(xiàn)程中的ThreadPoolExecutor使用解析,作為線(xiàn)程池的緩沖,當(dāng)新增線(xiàn)程超過(guò)maximumPoolSize時(shí),會(huì)將新增線(xiàn)程暫時(shí)存放到該隊(duì)列中,需要的朋友可以參考下2023-12-12