Sa-Token v1.42.0 发布 🚀,新增 API Key、TOTP 验证码、RefreshToken 反查等能力
Sa-Token 是一款 免费、开源 的轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、微服务网关鉴权 等一系列权限相关问题。
目前最新版本 v1.42.0 已推送至 Maven 中央仓库 ,大家可以通过如下方式引入:
<!-- Sa-Token 权限认证 -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.42.0</version>
</dependency>
该版本包含大量 ⛏️️️新增特性、⛏️底层重构、⛏️️️代码优化 等,下面容我列举几条比较重要的更新内容供大家参阅:
️ 更新点1:新增 API Key 模块
如果你曾经对接过 ChatGPT、DeepSeek 等大模型平台的开放接口,那你一定对 API Key 不陌生。
API Key 是一种接口调用密钥,类似于会话 token ,但比会话 token 具有更灵活的权限控制。
本次更新带来了 API Key 的全流程管理,支持为指定账号签发、校验、禁用、删除 API Key 。
同时每个 API Key 都可以单独设置不同的 scope 权限,以便在不同的场景下使用不同的 API Key,做到秘钥相互隔离,最小化授权。️
为了更好的展示此模块的能力,我们专门制作了一个 demo 示例:

示例仓库地址:sa-token-demo-apikey
在这个示例中,你可以登录测试不同的账号,并为它们签发 API Key,设置 scope 权限,并使用不同的 API Key 测试调用接口,观察响应结果。
框架默认将所有 API Key 信息保存在缓存中,这可以称之为“缓存模式”,在这种模式下,重启缓存库后,数据将会丢失。️
框架预留了 SaApiKeyDataLoader 接口,以便你将数据的加载切换为 “数据库模式”,做到数据长久有效保存。
在线文档直达地址:API Key 接口调用秘钥
更新点2:重构 TempToken 模块新增 value 反查机制
在 Sa-Token 文档中有一段这样的示例:

该示例演示了如何通过临时 Token 认证模块,创建 RefreshToken 为登录会话做到双 Token 的效果。
但是有一天我在官网 sa-token 小助手接收到一位用户的咨询:

该用户指出,是否可以为 RefreshToken 提供反查机制,以便获取某个账号历史签发的 全部 RefreshToken。
必须安排!
此次版本更新,允许程序在创建 refresh-token 时,指定第三个参数,该参数表示是否允许框架记录 Token 索引信息:
SaTempUtil.createToken("10001", 2592000, true);
指定为 false 代表不记录索引,只生成 token,指定为 true 代表记录索引信息,以便日后可以通过 value 反查历史签发的所有 token。
例如我们可以通过 SaTempUtil.getTempTokenList("xxx") 方法获取指定账号所有历史签发的 RefreshToken 记录:
List<String> refreshTokenList = SaTempUtil.getTempTokenList("10001");
在线文档直达地址:临时 Token 令牌认证
⏱️ 更新点3:新增 TOTP 算法实现
TOTP 是一种动态密码算法,用于生成短暂有效的数字验证码(通常6-8位)️。它的核心原理是:结合密钥与当前时间,通过哈希运算生成一次性密码。⏱
TOTP 一般有以下应用场景:
- 1、登录时的双因子认证:用户输入账号密码后还需要再输入 TOTP 验证码才可以登录成功。
- 2、敏感操作的二次认证:用户在进行一些高危敏感操作时,需要输入 TOTP 验证码才可以继续操作。️
- 3、替代短信验证码:TOTP 验证码无需网络,可离线计算生成,一定程度上可以替代短信验证码验证身份。
本次版本新增了 TOTP 验证码的生成与校验功能,这将方便大家为自己的系统添加双因子认证能力。
⚙️ 更新点4:重构升级 SaTokenContext 上下文读写策略
这可能是近几个版本中最底层的一次重构,几乎完全推翻了之前上下文模块的设计。
在之前的版本中,Sa-Token 对接不同的 Web 框架需要利用这些 Web 框架的原生上下文能力来构建 Sa-Token 的上下文。
本次更新 Sa-Token 利用 ThreadLocal 实现了自己的上下文存储机制,这将带来以下好处:
- 1、可以更方便、更简单的对接更多的 Web 框架。
- 2、可在异步场景中临时 Mock 一个上下文,调用 Sa-Token 框架同步 API。
- 3、彻底删除了二级上下文模块,做到了 Web 请求与 RPC 请求的上下文统一。
- 4、在防火墙 hook 里也可以调用 Sa-Token 同步 API 了。
更新点5:新增 CORS 跨域策略处理函数,提供不同架构下统一的跨域处理方案
在之前的版本中,跨域处理总是要写在全局鉴权过滤器中,属于“鉴权之下的额外补充操作”。
新版本专门提供了一个 CORS 跨域处理策略组件,以后再也不用仅仅为了跨域就书写一个长长的鉴权过滤器组件了。
/**
* CORS 跨域处理
*/
@Bean
public SaCorsHandleFunction corsHandle() {
return (req, res, sto) -> {
res.
// 允许指定域访问跨域资源
setHeader("Access-Control-Allow-Origin", "*")
// 允许所有请求方式
.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE")
// 有效时间
.setHeader("Access-Control-Max-Age", "3600")
// 允许的header参数
.setHeader("Access-Control-Allow-Headers", "*");
// 如果是预检请求,则立即返回到前端
SaRouter.match(SaHttpMethod.OPTIONS)
.free(r -> System.out.println("--------OPTIONS预检请求,不做处理"))
.back();
};
}
开源仓库示例:sa-token-demo-cross
更新点6:sa-token-quick-login 插件支持 Http Basic 方式通过认证
sa-token-quick-login 可以快速、方便的为项目注入一个登录页面,当我们引入依赖后:
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-quick-login</artifactId>
<version>1.42.0</version>
</dependency>
启动类:
@SpringBootApplication
public class SaTokenQuickDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SaTokenQuickDemoApplication.class, args);
System.out.println("\n------ 启动成功 ------");
System.out.println("name: " + SaQuickManager.getConfig().getName());
System.out.println("pwd: " + SaQuickManager.getConfig().getPwd());
}
}
测试 Controller
@RestController
public class TestController {
@RequestMapping({"/", "/index"})
public String index() {
String str = "<br />"
+ "<h1 style='text-align: center;'>资源页 (登录后才可进入本页面) </h1>"
+ "<hr/>"
+ "<p style='text-align: center;'> Sa-Token " + SaTokenConsts.VERSION_NO + " </p>";
return str;
}
}
启动项目,使用浏览器访问:http://localhost:8081,首次访问时,由于处于未登录状态,会被强制进入登录页面 :

使用默认账号:sa / 123456进行登录,会看到资源页面

新版本中更新了通过 Http Basic 的方式直接进行认证的能力:
http://sa:123456@localhost:8081/
这将非常有助于大家在专门的 API 测试工具下进行 quick-login 相关资源接口的测试。
完整更新日志
除了以上提到的几点以外,还有更多更新点无法逐一详细介绍,下面是 v1.42.0 版本的完整更新日志:
- core:
- 新增: 新增
API Key模块。 [重要] - 新增: 新增
TOTP实现。 [重要] - 重构:重构
TempToken模块,新增 value 反查 token 机制。 [重要] - 升级: 重构升级
SaTokenContext上下文读写策略。 [重要] - 新增: 新增 Mock 上下文模块。 [重要]
- 删除: 删除二级上下文模块。
- 新增: 新增异步场景使用 demo。 [重要]
- 新增: 新增
Base32编码工具类。 - 新增:新增
CORS跨域策略处理函数,提供不同架构下统一的跨域处理方案。 - 新增:
renewTimeout续期方法增加 token 终端信息有效性校验。 - 新增: 全局配置项
cookieAutoFillPrefix:cookie 模式是否自动填充 token 前缀。 - 新增: 全局配置项
rightNowCreateTokenSession:在登录时,是否立即创建对应的Token-Session。 - 优化:优化
Token-Session获取算法,减少缓存读取次数。 - 新增:
SaLoginParameter支持配置SaCookieConfig,以配置 Cookie 相关参数。 - 修改:防火墙校验过滤器的注册顺序 修改为 -102。
- 新增:防火墙
hook注册新增registerHookToFirst、registerHookToSecond方法,以便更灵活的控制 hook 顺序。
- 新增: 新增
- 插件:
- 新增:
sa-token-quick-login插件支持Http Basic方式通过认证。
- 新增:
- 单元测试:
- 补全:补全
Temp Token模块单元测试。
- 补全:补全
- 文档:
- 补全:补全赞助者名单。
- 修复:修复
Thymeleaf集成文档不正确的依赖示例说明。 - 修复:修复
unionid章节错误描述。 - 优化:采用更细致的描述优化SSO模式三单点注销步骤。
- 新增:登录认证文档添加 Cookie 查看步骤演示图。
- 新增:多账号模式新增注意点:运行时不可更改
LoginType。 - 新增: 多账号模式QA:在一个接口里获取是哪个体系的账号正在登录。
- 新增:新增QA:解决低版本
SpringBoot (<2.2.0)引入 Sa-Token 报错的问题。 - 新增:新增QA:前后端一体项目下,在拦截未登录进入登录页面时,如何登录完成后原路返回?
- 新增:新增QA:Sa-Token 集成 Redis 如何集群?
- 新增:新增QA:如何自定义框架读取 token 的方式?
- 新增:新增QA:修改
hosts文件无效可能原因排查。 - 新增:新增QA:如何防止 CSRF 攻击。
- 新增: “异步 & Mock 上下文” 章节。
- 升级:升级“自定义 SaTokenContext 指南”章节文档。
更新日志在线文档直达链接:https://sa-token.cc/doc.html#/more/update-log
其它
代码仓库地址:https://gitee.com/dromara/sa-token
框架功能结构图:

Sa-Token v1.42.0 发布 🚀,新增 API Key、TOTP 验证码、RefreshToken 反查等能力的更多相关文章
- RapidJSON v1.1.0 发布简介
时隔 15.6 个月,终于发布了一个新版本 v1.1.0. 新版本除了包含了这些日子收集到的无数的小改进及 bug fixes,也有一些新功能.本文尝试从使用者的角度,简单介绍一下这些功能和沿由. P ...
- FineUIMvc v1.4.0 发布了(ASP.NET MVC控件库)!
FineUIMvc v1.4.0 已经于 2017-06-30 发布,FineUIMvc 是基于 jQuery 的专业 ASP.NET MVC 控件库,是我们的新产品.由于和 FineUI(专业版)共 ...
- Kube-OVN v1.10.0:新增Windows节点支持,用户自定义子网ACL等10+硬核功能
在Kube-OVN社区小伙伴的共同努力下,Kube-OVN v1.10.0于五月份正式发布.Kube-OVN v1.10.0版本中,我们一如既往地对Kube-OVN 的功能.性能.稳定性和易用性进行了 ...
- Jsonnet-PHP v1.3.0 发布,支持 PHP 7 使用 Jsonnet
JsonNet-PHP 是 Google Jsonnet 对 PHP的支持扩展. pecl: http://pecl.php.net/package/jsonnet github: https://g ...
- Solon v1.11.0 发布,Hello Java
一个更现代感的 Java 应用开发框架:更快.更小.更自由.没有 Spring,没有 Servlet,没有 JavaEE:独立的轻量生态.主框架仅 0.1 MB. @Controller public ...
- Solon Java Framework v1.12.0 发布
一个更现代感的 Java 应用开发框架:更快.更小.更自由.没有 Spring,没有 Servlet,没有 JavaEE:独立的轻量生态.主框架仅 0.1 MB. @Controller public ...
- Yearning v1.3.0 发布,Web 端 SQL 审核平台
企业级MYSQL web端 SQL审核平台. Website 官网 www.yearning.io Feature 功能 数据库字典自动生成 SQL查询 查询工单 导出 自动补全,智能提示 查询语句审 ...
- spring-boot-plus V1.4.0发布 集成用户角色权限部门管理
RBAC用户角色权限 用户角色权限部门管理核心接口介绍 Shiro权限配置
- Gitea v1.17.0 正式发布 | 集成软件包管理器、容器镜像仓库
我们自豪地宣布 Gitea v1.17.0 发布了.本次发布带来了诸多新特性和累积的更新,我们强烈建议用户在更新到最新版本之前仔细阅读发行注记. 在 1.17.0 版本的开发中我们一共合并了 645 ...
- Volcano社区v1.6.0版本正式发布
摘要:Volcano社区v1.6.0版本正式发布.此次版本增加了弹性作业管理.基于真实负载的动态调度. 基于真实负载的重调度.Volcano Job插件--MPI等多个新特性. 本文分享自华为云社区& ...
随机推荐
- 项目PMP之十三相关方管理
项目PMP之十三--相关方管理 一.定义: 核心理念: 每个项目都有相关方,他们会受项目的积极或消极影响,或者能对项目施加积极或消极的影响. 以相关方满意度作为项目目标进行识别和管理,并保持沟通, ...
- ChatRoom pg walkthrough Intermediate
NMAP ┌──(root㉿kali)-[~/lab] └─# nmap -p- -A 192.168.189.110 Starting Nmap 7.94SVN ( https://nmap.org ...
- 开源标杆!天翼云TeleDB入选《2024央国企开源项目典型实践》!
近日,由中国通信标准化协会主办.中国信通院承办的2024 OSCAR开源产业大会在北京召开,会上发布<2024央国企开源项目典型实践>,天翼云科技有限公司打造的"TeleDB分布 ...
- C#/.NET/.NET Core技术前沿周刊 | 第 25 期(2025年2.1-2.9)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- KUKA库卡机器人KR120维修故障参考方案
随着智能制造的飞速发展,KUKA库卡机器人KR120以其稳定的特点,在自动化生产线上扮演着举足轻重的角色.然而,任何机械设备在长期运行过程中都难免会遇到故障.本文将针对KUKA库卡机器人KR120维修 ...
- PowerJob:一款强大且开源的分布式调度与计算框架
项目名称:PowerJob 项目作者:假诗人 开源许可协议:Apache-2.0 项目地址:https://gitee.com/KFCFans/PowerJob 项目简介 PowerJob(原Oh ...
- QT5笔记:24. 自定义对话框以及模态 调用
创建窗口时 窗口对象为QDialog 调用方法为exec(); int res = setSizeDialog->exec();//模态窗口 (不必要)exec可以获取到调用的是对话框的 QDi ...
- MybatisPlus - [08] RestFul
编号 接口 请求方式 请求路径 请求参数 返回值 1 新增用户 POST /users 用户表单实体 无 2 删除用户 DELETE /users/{id} 用户id 无 3 根据id查询用户 GET ...
- Python基础-Python操作word、面向对象
今日概要: 第三方模块 -- word 面向对象 1 Word格式-第三方模块 自定义模块 内置模块 第三方模块 requests bs4 openpyxl python-docx 1.1 快速上手 ...
- PHP测试代码执行时间
https://blog.csdn.net/wyqwclsn/article/details/39930125 非常简单代码开始前加一个$start = microtime(true);代码结束后加一 ...