前言
在java的世界裡,有很多優秀的許可權認證框架,如Apache Shiro
、Spring Security
等等。這些框架背景強大,歷史悠久,其生態也比較齊全。
但同時這些框架也並非十分完美,在前後臺分離已成標配的網際網路時代,這些老牌框架的很多設計理念已經相當滯後,無法與我們的專案完美契合。
而今天我要介紹的這款框架,專門為前後臺分離架構而生, 功能強大, 上手簡單 —— sa-token。
sa-token 是什麼?
sa-token是一個輕量級Java許可權認證框架,主要解決: 登入認證、許可權認證、Session會話 等一系列許可權相關問題
sa-token的API呼叫非常簡單,一行程式碼即可搞定登入授權,廢話不多說,我們直接上示例:
1. 新增pom依賴
<!-- sa-token 許可權認證, 線上文件:http://sa-token.dev33.cn/ -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.12.0</version>
</dependency>
2. 呼叫框架API進行登入
// 在使用者賬號密碼驗證成功後,直接呼叫以下API進行登入授權
StpUtil.setLoginId(10001);
至此,我們已經藉助sa-token框架完成登入授權!
此時的你的小腦袋可能飄滿了問號,就這麼簡單?自定義Realm呢?全域性過濾器呢?我不用寫各種配置檔案嗎?
事實上在此我可以負責的告訴你,在sa-token
中,登入授權就是如此的簡單,不需要什麼全域性過濾器,不需要各種亂七八糟的配置!只需要這一行簡單的API呼叫,即可完成會話的登入授權!
當你受夠Shiro、Security等框架的三拜九叩之後,你就會明白,相對於這些傳統老牌框架,sa-token的API設計是多麼的清爽!
拒絕引入複雜的概念,以實際業務需求為第一目標進行定向突破,業務上需要什麼,sa-token就做什麼,不搞各種雲裡霧裡的高大上概念,以化繁為簡為第一目標!
除了以上的登入授權,sa-token還可以一行程式碼完成以下功能:
StpUtil.setLoginId(10001); // 標記當前會話登入的賬號id
StpUtil.getLoginId(); // 獲取當前會話登入的賬號id
StpUtil.isLogin(); // 獲取當前會話是否已經登入, 返回true或false
StpUtil.logout(); // 當前會話登出登入
StpUtil.logoutByLoginId(10001); // 讓賬號為10001的會話登出登入(踢人下線)
StpUtil.hasRole("super-admin"); // 查詢當前賬號是否含有指定角色標識, 返回true或false
StpUtil.hasPermission("user:add"); // 查詢當前賬號是否含有指定許可權, 返回true或false
StpUtil.getSession(); // 獲取當前賬號id的Session
StpUtil.getSessionByLoginId(10001); // 獲取賬號id為10001的Session
StpUtil.getTokenValueByLoginId(10001); // 獲取賬號id為10001的token令牌值
StpUtil.setLoginId(10001, "PC"); // 指定裝置標識登入
StpUtil.logoutByLoginId(10001, "PC"); // 指定裝置標識進行強制登出 (不同端不受影響)
StpUtil.switchTo(10044); // 將當前會話身份臨時切換為其它賬號
sa-token的API眾多,請恕此處無法逐一為您展示,以上示例只是框架能力的很小一部分能力展示。
在sa-token
中,各種與登入鑑權相關功能:踢人下線、自動續簽、同端互斥登入等常見業務均可以一行程式碼呼叫實現
關於sa-token
的授權登入先介紹至此,接下來的章節我會陸續介紹sa-token
框架的其它各種強大能力
如果覺得文章寫得不錯還請大家不要吝惜為文章點個贊,您的支援是我更新的最大動力!
最後附上專案連結:
- 官網文件:http://sa-token.dev33.cn/
- Gitee開源地址: https://gitee.com/sz6/sa-token
- GitHub開源地址: https://github.com/click33/sa-token