README_zh_TW.md
简体中文 | 繁體中文 | English | 日本語 | 한국어 | Русский
<p align="center"> </p> <h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">Sa-Token v1.46.0</h1> <h4 align="center">✨ 開源、免費、一站式 java 權限認證框架,讓鑑權變得簡單、優雅! </h4> <p align="center"> <a href="https://gitee.com/dromara/sa-token/stargazers"></a> <a href="https://gitee.com/dromara/sa-token/members"></a> <a href="https://atomgit.com/dromara/sa-token/stargazers"></a> <a href="https://github.com/dromara/sa-token/stargazers"></a> <a href="https://github.com/dromara/sa-token/network/members"></a> <!-- <a href="https://github.com/dromara/sa-token/watchers"></a> --> <!-- <a href="https://github.com/dromara/sa-token/issues"></a> --> <a href="https://github.com/dromara/sa-token/blob/master/LICENSE"></a> </p> <!-- <p align="center">學習測試請拉取 master 分支,dev 是在開發分支 (在根目錄執行 `git checkout master`)</p> --> <p align="center"> <a href="https://sa-token.com?way=readme" target="_blank">在線文檔:https://sa-token.com</a> | <a href="https://sa-token.com/doc.html#/more/demand-commit" target="_blank">需求提交</a> </p>回望 2020 年初,我為 Sa-Token 提交第一行代碼之際,彼時市面上 Java 缺少的不僅是一個簡潔好用的鑑權框架,更是一整套清晰、自洽的權限架構設計思想。
因此,這幾年間我將大量時間傾注在 Sa-Token 的文檔編寫,幾乎每一章節、每一句話、每一個字都經過反覆修改、精細打磨,以求做到最清晰、幹練、易懂的表述。用心閱讀文檔,你學習到的將不止是 Sa-Token 框架本身,更是絕大多數場景下權限設計的最佳實踐。
Sa-Token 是一個輕量級 Java 權限認證框架,目前擁有五大核心模塊:登錄認證、權限認證、單點登錄、OAuth2.0、微服務鑑權。
你還在手搓以下功能?Stop ⚠️ 讓 Sa-Token 來!
要在 SpringBoot 項目中使用 Sa-Token,你只需要在 pom.xml 中引入依賴:
<!-- Sa-Token 權限認證, 在線文檔:https://sa-token.com -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.46.0</version>
</dependency>
除了支持 SpringBoot2、Sa-Token 還為 SpringBoot3/4、Solon、JFinal 等常見 Web 框架提供集成包,做到真正的開箱即用。
<details> <summary><b>簡單示例展示:</b>(點擊展開 / 摺疊)</summary>Sa-Token 旨在以簡單、優雅的方式完成系統的權限認證部分,以登錄認證為例,你只需要:
// 會話登錄,參數填登錄人的賬號id
StpUtil.login(10001);
無需實現任何接口,無需創建任何配置文件,只需要這一句靜態代碼的調用,便可以完成會話登錄認證。
如果一個接口需要登錄後才能訪問,我們只需調用以下代碼:
// 校驗當前客戶端是否已經登錄,如果未登錄則拋出 `NotLoginException` 異常
StpUtil.checkLogin();
在 Sa-Token 中,大多數功能都可以一行代碼解決:
踢人下線:
// 將賬號id為 10077 的會話踢下線
StpUtil.kickout(10077);
權限認證:
// 註解鑑權:只有具備 `user:add` 權限的會話才可以進入方法
@SaCheckPermission("user:add")
public String insert(SysUser user) {
// ...
return "用戶增加";
}
路由攔截鑑權:
// 根據路由劃分模塊,不同模塊不同鑑權
registry.addInterceptor(new SaInterceptor(handler -> {
SaRouter.match("/user/**", r -> StpUtil.checkPermission("user"));
SaRouter.match("/admin/**", r -> StpUtil.checkPermission("admin"));
SaRouter.match("/goods/**", r -> StpUtil.checkPermission("goods"));
SaRouter.match("/orders/**", r -> StpUtil.checkPermission("orders"));
SaRouter.match("/notice/**", r -> StpUtil.checkPermission("notice"));
// 更多模塊...
})).addPathPatterns("/**");
如果您曾經使用過 Shiro、SpringSecurity,在切換到 Sa-Token 後,您將體會到質的飛躍。
<!-- 當你受夠 Shiro、SpringSecurity 等框架的三拜九叩之後,你就會明白,相對於這些傳統老牌框架,Sa-Token 的 API 設計是多麼的簡單、優雅! --> </details> <details> <summary> <b>核心模塊一覽:</b>(點擊展開 / 摺疊) </summary>Sa-Token SSO 分為三種模式,可解決:同域、跨域、共享Redis、跨Redis、前後端一體、前後端分離、純 js、vue2、vue3、java 項目、非 java 項目 等架構下的 SSO 認證需求:
| 系統架構 | 採用模式 | 簡介 | 文檔鏈接 |
|---|---|---|---|
| 前端同域 + 後端同 Redis | 模式一 | 共享Cookie同步會話 | 文檔、示例 |
| 前端不同域 + 後端同 Redis | 模式二 | URL重定向傳播會話 | 文檔、示例 |
| 前端不同域 + 後端 不同Redis | 模式三 | HTTP請求獲取會話 | 文檔、示例 |
c1.domain.com、c2.domain.com、c3.domain.comhttp://a.com?id=1&name=2,登錄成功後就變成了:http://a.com?id=1,Sa-Token-SSO 內有專門算法保證了參數不丟失,登錄成功後精準原路返回。Sa-Token OAuth2 模塊分為四種授權模式,解決不同場景下的授權需求
| 授權模式 | 簡介 |
|---|---|
| 授權碼式 | OAuth2 標準授權步驟,server 端下放 code,client 端獲取 code 碼兌換 access_token |
| 隱藏式 | 備用選擇,server 端使用 URL 重定向方式直接將 access_token 下放到 client 端頁面 |
| 密碼式 | client 直接拿著用戶的賬號密碼換取授權 access_token |
| 客戶端憑證式 | server 端針對 client 級別的 client_token,代表應用自身的資源授權 |
詳細參考文檔:https://sa-token.com/doc.html#/oauth2/readme
1、Sa-Token 功能全不全?
七年磨一劍:五大核心模塊(登錄、鑑權、SSO、OAuth2、微服務) + 眾多實用插件 (短 token、jwt 集成、API 參數簽名、API Key 秘鑰授權...) 我們提供的不只是權限認證,我們提供的是一站式解決方案。
2、Sa-Token 好不好學?
中文文檔 + 中文代碼註釋 + 中文交流社區 + 大量實戰案例博客 + 多個視頻教程 + 大量優秀開源項目集成案例。
3、Sa-Token 用的人多不多?
截止統計日 (2026-1-25) 起,Sa-Token 在:
這是眾多開發者用腳投票的數據,相信這些數據比任何言語都能證明 Sa-Token 的熱度。
4、Sa-Token 有哪些權威認證?
曾獲榮譽包括但不限於:Gitee GVP 最有價值開源項目、GitCode G-Star 優質開源項目、OSCHINA 2021 人氣指數 TOP 30 開源項目、OSCHINA 2022 年度最火熱中國開源項目社區之一、開放原子基金會2023快速成長開源項目、 Dromara 組織頂尖項目(之一)、可信開源社區共同體預備成員、所在開源社區 “Dromara” 榮獲《2024中國互聯網發展創新與投資大賽(開源)》二等獎。 Gitee High Star 計劃項目(5000+star)。Gitee 2025年度開源項目 Web應用開發 Top 2。
5、Sa-Token 收費嗎?
Sa-Token 採用 Apache-2.0 開源協議,承諾框架本身與在線文檔永久免費開放。當然如果您有心贊助 Sa-Token,我們也不迴避:贊助鏈接。 我們將定期同步贊助者名單到在線文檔展示。(您需要注意的一點是:該贊助僅為友情贊助,不提供任何商業交換)
6、Sa-Token 是封裝的 SpringSecurity 嗎?是套殼 ApacheShiro 嗎?
不是。Sa-Token 不是一個後臺模板,也不是針對 xx 框架的二次封裝套殼,而是從 0 開始的純血自研框架,核心包零依賴,完全自主可控的架構內核 + 眾多主流框架的集成適配。
還有更多優秀開源案例無法逐一展示,請參考:Awesome-Sa-Token
Sa-Token 社區成員貢獻了多語言實現版本:
我們誠邀對上述語言較為熟練的開發者,一起建設相關版本。🤝
我們為框架幾乎所有技術點均單獨製作了對應的集成示例,此壓縮包共計 60+ Demo:涵蓋 Sa-Token 登錄認證、權限認證、SSO 單點登錄、OAUth2 統一認證、微服務鑑權、API Key 認證、JWT集成、跨系統調用參數簽名校驗 等鑑權認證的方方面面。
下載地址:https://sa-token.com/doc.html#/more/download-demos
QQ交流群:1098917026 點擊加入
微信交流群:
<!-- -->PS:掃碼添加微信 (備註:sa-token),邀您加入群聊。
加入群聊的好處: