# 更新日志 ### v1.41.0 @2025-3-21 更新导读:[视频](https://www.bilibili.com/video/BV1aNo4YCEM1/)、[文字版](https://juejin.cn/post/7484191942358499368) - core: - 修复:修复 `StpUtil.setTokenValue("xxx")`、`loginParameter.getIsWriteHeader()` 空指针的问题。 fix: [#IBKSM0](https://gitee.com/dromara/sa-token/issues/IBKSM0) - 修复:将 `SaDisableWrapperInfo.createNotDisabled()` 默认返回值封禁等级改为 -2,以保证向之前版本兼容。 - 新增:新增基于 SPI 的插件体系。 **[重要]** - 重构:JSON 转换器模块。 **[重要]** - 新增:新增 serializer 序列化模块,控制 `Object` 与 `String` 的序列化方式。 **[重要]** - 重构:重构防火墙模块,增加 hooks 机制。 **[重要]** - 新增:防火墙新增:请求 path 禁止字符校验、Host 检测、请求 Method 检测、请求头检测、请求参数检测。重构目录遍历符检测算法。 - 重构:重构 `SaTokenDao` 模块,将序列化与存储操作分离。 **[重要]** - 重构:重构 `SaTokenDao` 默认实现类,优化底层设计。 - 新增:`isLastingCookie` 配置项支持在全局配置中定义了。 - 重构:`SaLoginModel` -> `SaLoginParameter`。 **[不向下兼容]** - 重构:`TokenSign` -> `SaTerminalInfo`。 **[不向下兼容]** - 新增:`SaTerminalInfo` 新增 `extraData` 自定义扩展数据设置。 - 新增:`SaLoginParameter` 支持配置 `isConcurrent`、`isShare`、`maxLoginCount`、`maxTryTimes`。 - 新增:新增 `SaLogoutParameter`,用于控制注销会话时的各种细节。 **[重要]** - 新增:新增 `StpLogic#isTrustDeviceId` 方法,用于判断指定设备是否为可信任设备。 - 新增:新增 `StpUtil.getTerminalListByLoginId(loginId)`、`StpUtil.forEachTerminalList(loginId)` 方法,以更方便的实现单账号会话管理。 - 升级:API 参数签名配置支持自定义摘要算法。 - 新增:新增 `@SaCheckSign` 注解鉴权,用于 API 签名参数校验。 - 新增:API 参数签名模块新增多应用模式。 fix: [#IAK2BI](https://gitee.com/dromara/sa-token/issues/IAK2BI), [#I9SPI1](https://gitee.com/dromara/sa-token/issues/I9SPI1), [#IAC0P9](https://gitee.com/dromara/sa-token/issues/IAC0P9) **[重要]** - 重构:全局配置 `is-share` 默认值改为 false。 **[不向下兼容]** - 重构:踢人下线、顶人下线默认将删除对应的 token-session 对象。 - 优化:优化注销会话相关 API。 - 重构:登录默认设备类型值改为 DEF。 **[不向下兼容]** - 重构:`BCrypt` 标注为 `@Deprecated`。 - 新增:`sa-token-quick-login` 支持 `SpringBoot3` 项目。 fix: [#IAFQNE](https://gitee.com/dromara/sa-token/issues/IAFQNE)、[#673](https://github.com/dromara/Sa-Token/issues/673) - 新增:`SaTokenConfig` 新增 `replacedRange`、`overflowLogoutMode`、`logoutRange`、`isLogoutKeepFreezeOps`、``isLogoutKeepTokenSession`` 配置项。 - OAuth2: - 重构:重构 sa-token-oauth2 插件,使注解鉴权处理器的注册过程改为 SPI 插件加载。 - 插件: - 新增:`sa-token-serializer-features` 插件,用于实现各种形式的自定义字符集序列化方案。 - 新增:`sa-token-fastjson` 插件。 - 新增:`sa-token-fastjson2` 插件。 - 新增:`sa-token-snack3` 插件。 - 新增:`sa-token-caffeine` 插件。 - 单元测试: - 新增:`sa-token-json-test` json 模块单元测试。 - 新增:`sa-token-serializer-test` 序列化模块单元测试。 - 文档: - 新增:QA “多个项目共用同一个 redis,怎么防止冲突?” - 优化:补全 OAuth2 模块遗漏的相关配置项。 - 优化:优化 OAuth2 简述章节描述文档。 - 优化:完善 “SSO 用户数据同步 / 迁移” 章节文档。 - 修正:补全项目目录结构介绍文档。 - 新增:文档新增 “登录参数 & 注销参数” 章节。 - 优化:优化“技术求助”按钮的提示文字。 - 新增:新增 `preview-doc.bat` 文件,一键启动文档预览。 - 完善:完善 Redis 集成文档。 - 新增:新增单账号会话查询的操作示例。 - 新增:新增顶人下线 API 介绍。 - 新增:新增 自定义序列化插件 章节。 - 其它: - 新增:新增 `sa-token-demo/pom.xml` 以便在 idea 中一键导入所有 demo 项目。 - 删除:删除不必要的 `.gitignore` 文件 - 重构:重构 `sa-token-solon-plugin` 插件。 - 新增:新增设备锁登录示例。 ### v1.40.0 @2025-2-1 更新导读:[视频](https://www.bilibili.com/video/BV1uNATeeEvg/)、[文字版](https://juejin.cn/post/7467969744307306505) - core: - 新增:新增 `Cookie` 自定义属性支持。 fix: [#693](https://github.com/dromara/Sa-Token/issues/693) **[重要]** - 新增:`SaFirewallStrategy` 防火墙策略:请求 path 黑名单校验、非法字符校验、白名单放行。 **[重要]** - 修复:新增对分号字符的 path 路径校验。 参考:[Sa-Token对url过滤不全存在的风险点](https://mp.weixin.qq.com/s/77CIDZbgBwRunJeluofPTA) **[漏洞修复]** - 修复: 修复部分场景下登录后已存在的 `token-session` 没有被续期的问题。 fix: [#IA8U1O](https://gitee.com/dromara/sa-token/issues/IA8U1O) - 优化:优化 `active-timeout` 的检查与续期操作,同一请求内只会检查与续期一次。 - 修复:`SaFoxUtil.joinSharpParam` 方法中不正确的注释。 - 新增:封禁模块新增支持实时从数据库查询数据。 - SSO: - 优化:SSO 示例代码的跨域处理由原生方式改为 Sa-Token 过滤器模式。 - 新增:文档新增 “SSO整合 - NoSdk 模式与非 java 项目” 章节。 - 新增:“不同 SSO Client 配置不同秘钥” 章节增加部分异常的处理方案提示,fix: [#IAFZXL](https://gitee.com/dromara/sa-token/issues/IAFZXL) - 删除:sso demo 示例中部分不必要的代码内容。 - OAuth2: - 新增:OAuth2 Client 前端测试页。 **[重要]** - 新增:`UnionId` 联合id 实现。 **[重要]** - 新增:`oauth2-server` 端前后台分离示例与文档。 fix: [#I9DQGA](https://gitee.com/dromara/sa-token/issues/I9DQGA)、[#I9W2RU](https://gitee.com/dromara/sa-token/issues/I9W2RU) **[重要]** - 新增:`OIDC` 模式 `nonce` 随机数响应校验。 merge: [pr311](https://gitee.com/dromara/sa-token/pulls/311) - 修复:错误方法名 `deleteGrantScope(String state)` -> `deleteState(String state)`。 - 修复:全局配置项 `sa-token.oauth2-server.oidc.iss` 无效的问题。 - 新增:回收 Refresh-Token 方法: `revokeRefreshToken`、`revokeRefreshTokenByIndex`。 - 新增:为 `CodeModel`、`AccessTokenModel`、`RefreshTokenModel`、`ClientTokenModel` 添加 `createTime` 字段,以记录该数据的创建时间。 - 新增:为 Access-Token、Client-Token 添加 `grantType` 字段,以记录该数据的授权类型。 - 新增:`SaOAuth2Util.getCode` 等方法,以更方便的获取、校验授权码。 - 插件: - 新增:新增 `sa-token-freemarker` 插件,整合 `Freemarker` 视图引擎。 fix: [#651](https://github.com/dromara/sa-token/issues/651) **[重要]** - 新增:新增 `sa-token-spring-el` 插件,用于支持 SpEL 表达式注解鉴权。 fix: [#IB3GBB](https://gitee.com/dromara/sa-token/issues/IB3GBB)、fix: [#IAIXSL](https://gitee.com/dromara/sa-token/issues/IAIXSL)、fix: [#I9P24F](https://gitee.com/dromara/sa-token/issues/I9P24F) **[重要]** - 文档: - 新增:新增 `MongoDB` 集成示例。 感谢 `@lilihao` 提供的示例。 merge: [pr322](https://gitee.com/dromara/sa-token/pulls/322)、[pr667](https://github.com/dromara/Sa-Token/pull/667) **[重要]** - 新增:“fox说技术” 视频教程链接。 - 新增:“API接口参数签名”章节 视频讲解链接(B站抓蛙师)。 - 优化:文档首页首屏增加需求提交按钮。 - 其它:补全赞助者名单、`Dromara` 项目链接等信息。 - 新增:`SpringBoot3.x` 版本配置 Redis 注意事项。fix: [#688](https://github.com/dromara/Sa-Token/issues/688) - 新增:`gitcode` g-star badge 展示。 - 修复:`OAuth2` 滞后的配置信息示例。 - 新增:新增视频账号链接。 - 新增:新增团队成员展示。 ### v1.39.0 @2024-8-28 - 核心: - 升级:重构注解鉴权底层,支持自定义鉴权注解了。 **[重要]** - 修复:修复前端提交同名 `Cookie` 时的框架错读现象。 - 更名:`NotBasicAuthException` -> `NotHttpBasicAuthException`。 - 插件: - 修复:修复 `sa-token-quick-login` 插件无法正常拦截的问题。 - SSO: - 优化:优化 sso-server 前后端分离 demo 代码。 - 优化:优化 sso-server 前后端分离时的跳转流程。 - OAuth2: - 重构:`sa-token-oauth2` 模块整体重构。 **[重要]** **[不向下兼容]** - 新增:新增支持自定义 `scope` 处理器。 **[重要]** - 新增:新增支持自定义 `grant_type`。 **[重要]** - 新增:新增 `scope` 划分等级。 **[重要]** - 新增:新增 `oidc` 协议支持。 **[重要]** - 新增:新增支持默认 `openid` 生成算法。 **[重要]** - 新增:新增 `OAuth2` 注解鉴权支持。 **[重要]** - 修复:`redirect_url` 参数校验增加规则:不允许出现@字符、*通配符只能出现在最后一位。关联 [issue](https://github.com/dromara/Sa-Token/issues/529) **[重要]** - 优化:优化代码注释、异常提示信息。 - 升级:兼容 `Http Basic` 提交 `client` 信息的场景。感谢 github `@CuiGeekYoung` 提交的pr。 - 升级:兼容 `Bearer Token` 方式提交 `access_token` 和 `client_token`。 - 升级:适配拆分式路由。 - 新增:将 `scope` 字段改为 List 类型。 - 重构:抽离 `SaOAuth2Strategy` 全局策略接口,定义一些创建 token 的算法策略。 - 新增:新增 `addAllowUrls` `addContractScopes` 方法,简化 `SaClientModel` 构建代码。 - 重构:抽离 `SaOAuth2Dao` 接口,负责数据持久。 - 重构:抽离 `SaOAuth2DataLoader` 数据加载器接口。 - 重构:抽离 `SaOAuth2DataGenerate` 数据构造器接口。 - 重构:抽离 `SaOAuth2DataConverter` 数据转换器接口。 - 重构:抽离 `SaOAuth2DataResolver` 数据解析器接口。 - 重构:重构 `SaOAuth2Handle` -> `SaOAuth2ServerProcessor` 更方便的逻辑重写。 - 重构:重构 `PastToken` -> `LowerClientToken`。 - 新增:新增 `state` 值校验,同一 `state` 参数不可重复使用。 - 优化:完善 `SaOAuth2Util` 相关方法,更方便的二次开发。 - 新增:新增部分异常类,细分异常 `ClassType`。 - 优化:优化 `sa-token-oauth2` 异常细分状态码。 - 文档: - 新增:新增数据结构说明。 - 新增:新增不同 `client` 不同登录页说明。 - 优化:优化文档 [将权限数据放在缓存里] 示例。 - 新增:新增 从 Shiro、SpringSecurity、JWT 迁移 示例。 **[重要]** ### v1.38.0 @2024-5-12 - sa-token-core: - 修复:修复 `StpUtil.getSessionByLoginId(xx)` 参数为 null 时创建无效 `SaSession` 的 bug。 - 优化:在 `SpringBoot 3.x` 版本下错误的引入依赖时将得到启动失败的提示。 (感谢`Uncarbon`提交的pr) - 优化:进一步优化权限校验算法,hasXxx API 只会返回 true 或 false,不再抛出异常。 - 重构:`InvalidContextException` 更名为 `SaTokenContextException`。 **[已做向下兼容处理]** - 重构:彻底删除 `NotPermissionException` 异常中的 `getCode()` 方法。 **[过期API清理]** - 重构:重构 `SaTokenException` 类方法 `throwBy-`>`notTrue`、`throwByNull-`>`notEmpty`。**[已做向下兼容处理]** - 重构:`StpUtil.getSessionBySessionId` 提供的 `SessionId` 为空时将直接抛出异常,而不是再返回null。**[不向下兼容]** - 新增:新增 `Http Digest` 认证模块简单实现。 **[重要]** - 重构:更换 `HttpBasic` 认证模块包名。 **[已做向下兼容处理]** - 新增:新增 `StpUtil.getLoginDeviceByToken(xxx)` 方法,用于获取任意 token 的登录设备类型。 - 新增:新增 `StpUtil.getTokenLastActiveTime()` 方法,获取当前 token 最后活跃时间。 - 修复:修复“当登录时指定 timeout 小于全局 timeout 时,`Account-Session` 有效期为全局 timeout”的问题。 - 优化:首次获取 `Token-Session` 时,其有效期将保持和 token 有效期相同,而不是再是全局 timeout 值。 - 移除:移除 `SaSignConfig` 的 `isCheckNonce` 配置项。 **[不向下兼容]** - 新增:`SaSignTemplate#checkRequest` 增加“可指定参与签名参数”的功能。 - 重构:将部分加密算法设置为过期。 - 重构:优化 token 读取策略,空字符串将视为没有提交token。 - 修复:`sa-token-bom` 补全缺失依赖。 - 优化:二级认证校验之前必须先通过登录认证校验。 - 修复:修复 `StpUtil.getLoginId(T defaultValue)` 传入 null 时无法正确返回值的bug。 - sa-token-sso: - 优化:SSO 模式三,API 调用签名校验时,限定参与签名的参数列表,更安全。 - 新增:新增 `autoRenewTimeout` 配置项:是否在每次下发 ticket 时,自动续期 token 的有效期(根据全局 timeout 值) - 新增:`SaSsoConfig` 新增配置 `isCheckSign`(是否校验参数签名),方便本地开发时的调试。 - 新增:`SaSsoConfig` 新增配置 `currSsoLogin`,用于强制指定当前系统的 sso 登录地址。 - 重构:整体重构 `sa-token-sso` 模块,将 `server` 端和 `client` 端代码拆分。 **[重要]** **[不向下兼容]** - 新增:`SaSsoConfig` 配置项 `ssoLogoutCall` 重命名为 `currSsoLogoutCall`。**[已做向下兼容处理]** - 重构:模式三在校验 Ticket 时,也将强制校验签名才能调通请求。**[不向下兼容]** - 新增:新增 `maxRegClient` 配置项,用于控制模式三下 client 注册数量。 - 新增:新增不同 SSO Client 配置不同 `secret-key` 的方案。 **[重要]** - 重构:匿名 client 将不再能解析出所有应用的 ticket。**[不向下兼容]** - 新增:新增 `homeRoute` 配置项:在 ``/sso/auth`` 登录后不指定 redirect 参数的情况下默认跳转的路由。 - 优化:优化登录有效期策略,SSO Client 端登录时将延续 SSO Server 端的会话剩余有效期。 - 新增:新增 `checkTicketAppendData` 策略函数,用于在校验 ticket 后,给 sso-client 端追加返回信息。 - 新增:SSO章节文档新增用户数据同步/迁移方案的建议。 - 修复:修复利用@字符可以绕过域名允许列表校验的漏洞。 **[漏洞修复]** - 修复:禁止 `allow-url` 配置项 * 符号出现在中间位置,因为这有可能导致校验被绕过。 **[漏洞修复]** - 新增插件/示例: - 新增:新增插件 `sa-token-hutool-timed-cache`,用于整合 Hutool 缓存插件 TimedCache。 **[重要]** - 新增:新增 SSM 架构整合 Sa-Token 简单示例。 **[重要]** - 新增:新增 beetl 整合 Sa-Token 简单示例。 **[重要]** - 文档: - 部分章节将 `@Autowired` 更换为更合适的 `@PostConstruct` - 新增过滤器执行顺序更改示例。 - 其它: - 优化:将跨域处理demo拆分为独立仓库。 - 优化:解决 springboot 集成 sa-token 后排除 jackson 依赖无法成功启动的问题。 - 优化:解决 `sa-token-jwt` 模块重复设置 keyt 秘钥问题。(感谢`KonBAI`提交的pr) - 优化:jwt模式 token 过期后,抛出的异常描述是 token 已过期,而不再是 token 无效。 - 修复:补齐 `sa-token-spring-aop` 模块中遗漏监听的注解。 ### v1.37.0 @2023-10-18 - 修复:修复路由拦截鉴权可被绕过的问题。 **[漏洞修复]** - 重构:未登录时调用鉴权 API 抛出未登录异常而不再是无权限异常。 - 优化:优化 SaTokenDao 组件更换时的逻辑。 - 文档:提供 SpringBoot3.x 路由匹配出错的解决方案。 ### v1.36.0 @2023-9-22 - sa-token-core: - 修复:API接口签名校验参数接口NPE问题,增加必须参数的非空校验处理。 - 新增:加密工具类新增 sha384、sha512 实现。 感谢 `@若初995` 提交的pr。 **[重要]** - 修复:`SaFoxUtil.vagueMatch()` 正则匹配的一些问题。 **[漏洞修复]** - 修复:`SaRouter.match()` 路由匹配的一些问题。 **[漏洞修复]** - 其它: - 优化:`sa-token-alone-redis` 去掉不必要的配置项判断。 - 新增:`sa-token-solon-plugin` 增加对 solon 网关的支持。 - 新增:新增第三方插件专用仓库:`sa-token-three-plugin` 。 - 升级:`sa-token-solon-plugin` 增加对 solon 网关的支持。 - 文档: - 新增:新增开启全局懒加载时不能注入上下文处理器的处理方案 。 - 新增:新增 RefreshToken 示例。 **[重要]** - 新增:文档新增 sa-token 小助手,可在线实时技术提问。 **[重要]** - 优化:其它一些优化。 - 新增插件: - `sa-token-redisson-jackson2`:通用 redisson 集成方案 (spring, solon, jfinal 等都可用) ### v1.35.0 @2023-6-23 - sa-token-core: - 优化:前端未提供 token 时,`getTokenSession()` 将抛出未登录异常,而不是返回 null。 **[不向下兼容]** - 新增:SaSession 新增字段:`type`、`loginType`、`loginId`、`token`。 - 重构:全局过滤器抽离 SaFilter 统一接口。 - 重构:全局过滤器 `includeList`、`excludeList` 改为 public,同时移除对应的 getter 方法。 **[不向下兼容]** - 重构:将全局过滤器的 BeforeAuth 认证设为不受 `includeList` 与 `excludeList` 的限制,所有请求都会进入。 **[不向下兼容]** - 新增:新增循环生成 token 的算法,用于确保 Token 的唯一性。 **[重要]** - 重构:API 接口签名所有方法均迁移至 core 核心模块。 **[重要]** - 新增:新增彩色日志打印,更方便的分辨不同日志等级。 **[重要]** - 重构:重构概念:临时有效期 -> token 最低活跃频率,过期后 token 冻结。 - 重构:重构概念:`User-Session` -> `Account-Session`。 - 新增:新增 `getTokenTimeout(String token)` 方法,获取任意 token 剩余有效期。 - 优化:在登录时增加判断当前 StpLogic 是否支持 extra 扩展参数模式,如果不支持则打印警告信息。 - 新增:NotLoginException 增加新场景值 -6、-7,提供更精确的未登录异常描述信息。 - 新增:TokenSign 新增 tag 挂载参数,可在登录时方便的存储一些客户端特有数据。 **[重要]** - 新增:新增 `SaStrategy#createStpLogic`,用于指定动态创建 StpLogic 时的算法策略。 - 新增:新增 `@SaCheckOr` 批量注解鉴权:只要满足其中一个注解即可通过验证。 **[重要]** - 重构:重命名:`SaStrategy.me` -> `SaStrategy.instance`。 - 重构:在登录时强制性检查账号 id 是否为异常值,如果是则登录失败。 - 重构:重构概念:`activity-timeout` -> `active-timeout`。 **[重要]** - 新增:新增动态 `active-timeout` 能力,可在每次登录时指定 `active-timeout` 值。 **[重要]** - 优化:将 `SaStrategy` 所有策略声明抽离为单独的函数式接口。 - 新增:增加为 StpLogic 单独配置 `SaTokenConfig` 参数的能力。 - sa-token-sso: - 修复:在 SSO 模式三中 `ticket` 校验地址配错时,会出现 NPE 的问题 - 新增:新增 `getData` 接口配置,在模式三拉取数据时可以传递任意参数。 **[重要]** - 重构:模式三秘钥配置更改:`sa-token.sso.secretkey=xxx` -> `sa-token.sign.secret-key=xxx`。 **[不向下兼容]** - 重构:模式三校验签名方法更改:`SaSsoUtil.checkSign(req)` -> `SaSignUtil.checkRequest(req)`。 **[不向下兼容]** - 新增:新增 `sa-token.sso.mode` 配置项,用于约定此系统使用的 SSO 模式。 - 优化:优化校验 ticket 的逻辑。 - sa-token-jwt: - 修复:jwt 令牌的签名类型可以被篡改的问题。 **[重要]** - 其它: - 优化:所有模块优化注释,更方便开发者阅读源码。 - 优化:在所有 .java 文件中添加 license 头说明。 - 优化:修复大部分代码警告。 - 新增:新增 thymeleaf 标签方言命名空间,增强 ide 代码提示。 **[重要]** - 新增:定义 `sa-token-bom` 包,方便引入 sa-token 时对齐版本。 - 新增:sa-token-dubbo3 插件新增代码示例。 - 新增:新增跨域文章和示例:Header 参数版和第三方 Cookie 版。 **[重要]** - 修复:修复 `sa-token-alone-redis` 在低版本 springboot 下无法启动成功(缺少 `username` 属性)的问题。 - 新增插件: - 新增:新增 `sa-token-context-dubbo3` 插件。 感谢 `@qiudaozhang` 提交的 pr。 **[重要]** - 文档: - 新增:部分常见报错排查。 - 新增:首页图片增加懒加载效果,节省流量。 - 新增:增加 Cookie 配置示例。 - 修复:整理 demo 结构目录结构,修复不正确的路径说明。 - 新增:新增 api-sign 模块文档。 **[重要]** - 简化包名 **[重要]** **[不向下兼容]** - `sa-token-dao-redis` -> `sa-token-redis` - `sa-token-dao-redis-jackson` -> `sa-token-redis-jackson`。 - `sa-token-dao-redis-fastjson` -> `sa-token-redis-fastjson`。 - `sa-token-dao-redis-fastjson2` -> `sa-token-redis-fastjson2`。 - `sa-token-dao-redisson-jackson` -> `sa-token-redisson-jackson`。 - `sa-token-dao-redisx` -> `sa-token-redisx`。 - `sa-token-context-dubbo` -> `sa-token-dubbo`。 - `sa-token-context-dubbo3` -> `sa-token-dubbo3`。 - `sa-token-context-grpc` -> `sa-token-grpc`。 ### v1.34.0 @2023-1-11 新增插件: - 新增:新增 `SpringBoot3.x` 集成插件,感谢 `@jry` 提供的参考思路。 **[重要]** - 新增:新增 `sa-token-dao-redisson-jackson` 插件,感谢 `@疯狂的狮子Li` 提交的pr。 **[重要]** sa-token-core 核心包: - 升级:升级 Sign 签名模块,增加部分重载方法。 - 重构:`SaSignTemplate#joinParams` 更名为 `joinParamsDictSort`。 **[不向下兼容]** - 升级:升级临时 Token 认证模块,可指定 service 参数。 - 删除:彻底删除过期类 `SaAnnotationInterceptor` 和 `SaRouteInterceptor`。 - 修复:修复源码注释和文档的部分不合适之处。 sa-token-sso 单点登录: - 删除:SSO 模块移除过期类 `SaSsoHandle` 类。 - 新增:SSO 模块增加 ticket 的 client 锁定功能,解决部分场景下的 ticket 劫持问题。 **[重要]** - 修复:修复 SSO 模式2,在 client 端配置 `is-share=false` 时无法单点注销的问题。 - 修复:修复 SSO 模式3 部分场景下注销时无法正常回退页面的问题。 其它模块: - sa-token-oauth2:修复 OAuth2 模块示例 getClientModel 方法 clientId 写错的问题。 - sa-token-alone-redis:新增:Alone-Redis 新增集群配置能力,感谢 `@appleOfGray` 提交的pr。 **[重要]** - sa-token-jwt:重构:使用 jwt-simple 模式后 is-share 恒等于 false,无论是否有设定 `setExtra` 数据。 ### v1.33.0 @2022-11-16 - 重构:重构异常状态码机制。 **[重要]** - 重构:重构 sa-token-sso 模块异常码改为 300 开头,sa-token-jwt 异常码改为 302 开头。 **[不向下兼容]** - 新增:新增全局 Log 模块。 **[重要]** - 重构:`SaTokenListenerForConsolePrint` 改名 `SaTokenListenerForLog`。 **[不向下兼容]** - 修复:修复多线程下 `SaFoxUtil.getRandomString()` 随机数重复问题。 - 修复:修复 sa-token-demo-sso3-client-nosdk 项目中单点注销 url 配置错误的问题 - 文档:文档优化。 ### v1.32.0 @2022-10-28 - 修复:修复 sa-token-dao-redis-fastjson 插件多余序列化 `timeout` 字段的问题。 - 修复:修复 sa-token-dao-redis-fastjson 插件 `session.getModel` 无法反序列化实体类的问题。 - 修复:修复 `sa-token-quick-login` 插件指定拦截排除路由不生效的问题。 - 修复:修复 `sa-token-alone-redis` + `sa-token-dao-redis-fastson` 时 Redis 无法分离的问题。 - 修复:修复在配置了 cookie.path 后,注销时无法彻底清除 Cookie 的问题。 - 升级:`SaFoxUtil.getValueByType()` 新增对 char 类型的转换。 - 新增:新增 `sa-token-dao-redis-fastjson2` 插件。 **[重要]** - 新增:新增全局配置 `is-write-header`,控制登录后是否将 Token 写入响应头。 **[重要]** - 新增:二级认证模块新增指定业务标识能力。 **[重要]** - 重构:Id-Token 模块更名为 Same-Token。 **[重要]** **[不向下兼容]** - 重构:重构会话查询参数作用:由`start=-1`时查询全部会话,改为 `start=0,size=-1` 时查询全部。 **[不向下兼容]** - 重构:`SaManager.getStpLogic("type")` 默认当对应type不存在时不再抛出异常,而是自动创建并返回。 - 重构:重构SSO模块,静态式API改为实例式:SaSsoHandle -> SaSsoProcessor。 **[重要]** **[不向下兼容]** - 重构:SSO-Server 端单点注销地址修改 `/sso/logout` -> `/sso/signout`,避免与 SSO-Client 端同 path 的冲突。 **[不向下兼容]** - 新增:文档新增 SSO 平台中心模式示例,跳连接进入子系统。 **[重要]** - 新增:新增SSO前后端分离集成示例 vue2 & vue3 版本。 **[重要]** - 重构:SSO 示例项目 http 请求工具改为 Forest。 - 新增:SSO模块文档新增单个项目同时搭建 `sso-server` 和 `sso-client` 的示例。 **[重要]** - 新增:SSO模块文档新增一个项目同时搭建两个 `sso-server` 服务 的示例。 **[重要]** - 文档:在线文档新增代码示例。 - 文档:在线文档增加全局调色功能。 - 文档:[自定义 SaTokenContext 指南] 章节新增对三种模型的解释。 - 文档:新增多账号体系混合鉴权代码示例。 - 文档:文档增加 `Gradle` 依赖方式和 `properties` 风格配置。 - 新增:新增 `sa-token-dependencies`,统一定义依赖版本。 **[重要]** ##### 已知问题: > 部分场景下 Token 重复问题,受影响版本 `=v1.32.0` > - 受影响模块: > - sa-token-core 切换了 Token 风格:tik、random-32、random-64、random-128,如果使用 默认uuid、simple-uuid 风格则不受影响。 > - sa-token-core 使用了临时 Token 认证模块,如果集成了 sa-token-temp-jwt 则不受影响。 > - sa-token-core 使用了 Same-Token 模块。 > - sa-token-jwt 全模块 > - sa-token-oauth2 全模块 > - sa-token-sso 模式二和模式三 ### v1.31.0 @2022-9-8 - 文档:新增优秀开源案例展示。 - 文档:新增博客展示,欢迎大家投稿。 - 新增:新增 `SaInterceptor` 综合拦截器。 **[重要]** **[不向下兼容]** - 新增:新增 新增 `@SaIgnore` 忽略鉴权注解。 **[重要]** - 新增:新增插件 `sa-token-dao-redis-fastjson`,感谢 `@sikadai` 提交的pr。 **[重要]** - 新增:新增插件 `sa-token-context-grpc`,感谢 `@LiYiMing666` 提交的pr。 **[重要]** - 重构:SaSession 取消 `tokenSignList` 的 final 修饰符。 - 新增:SaSession 添加 `setTokenSignList` 方法。 - 重构:TokenSign 新增 `setValue` 和 `setDevice` 方法。 - 修复:修复多账号模式下不能正确重置 `StpLogic` 的问题。 - 修复:修复 SaSession 对象中 TokenSign 判断有可能空指针的问题。 - 修复:解决当权限码为 null 时可能带来的空指针问题。 - 新增:新增 `StpUtil.getExtra(tokenValue, key)` 方法,用于获取任意 token 的扩展参数。 - 优化:优化 `StpLogic#logoutByTokenValue` 方法逻辑,精简代码。 - 重构:`SaTokenConfig` 配置类字段 `isReadHead` 改为 `isReadHeader`。 **[不向下兼容]** - 修复:修复部分场景下踢人下线会抛出异常 `非Web上下文无法获取Request` 的问题。 - 新增:新增方法 `StpLogic#getAnonTokenSession`,可在未登录情况下安全的获取 Token-Session。 **[重要]** - 新增:新增 `SaApplication` 对象,用于全局作用域存取值。 **[重要]** - 重构:将 `SaTokenListener` 改为事件发布订阅模式,允许同时注册多个侦听器。 **[重要]** **[不向下兼容]** - 重构:**StpUtil.login(id) 不再强制校验账号是否禁用,需要手动校验。** **[不向下兼容]** - 重构:`DisableLoginException` 更换名称为 `DisableServiceException`。 **[不向下兼容]** - 新增:新增对账号限制、分类封禁、阶梯封禁功能。 **[重要]** - 新增:会话查询API增加反序获取会话方式。 - 新增:SSO模块增加 server-url 属性,用于简化各种 url 配置。 **[重要]** - 修复:修复单点登录模块 `ssoLogoutCall` 配置项无效的问题。 - 优化:优化 `SaSsoHandle.checkTicket(ticket, currUri);` 方法,使其不提供 currUri 参数时将不再注册单点注销回调。 - 修复:修复 `SaOAuth2Handle` 类中 `doLogin` 方法没有使用 `Param.pwd` 常量的问题。 - 新增:新增 `SaOAuth2Util.checkClientTokenScope(clientToken, scopes)` 方法,校验 Client-Token 是否含有指定 Scope。 - 删除:删除 `sa-token-jwt` 模块过期 class。 - 重构:`sa-token-jwt` 模块依赖改为 `hutool-jwt`,并升级版本为 5.8.5。 - 重构:`sa-token-jwt` 模块改为 `Util + Template` 形式,方便针对部分代码重写。 **[重要]** - 新增:在线文档添加API手册。 - 重构:`sa-token-oauth2` 模块密码模式新增 `client_secret` 参数校验。**[不向下兼容]** - 新增:集成 `jacoco` 插件,核心包单元测试覆盖率提高至 90% 以上。 - 优化:开源案例分离专属仓库:[Awesome-Sa-Token](https://gitee.com/sa-token/awesome-sa-token) ### v1.30.0 @2022-05-9 - 新增:新增集成 Web-Socket 鉴权示例。 **[重要]** - 新增:新增集成 Web-Socket(Spring封装版) 鉴权示例。 - 新增:新增 jfinal 集成包 `sa-token-jfinal-plugin` **[重要]** - 新增:新增 jboot 集成包 `sa-token-jboot-plugin` (感谢 @nxstv 提交的pr) - 修复:修复整合 sa-token-jwt Style 模式时,`StpUtil.getExtra("key")` 无效的bug - 升级:升级 `sa-token-context-dubbo` dubbo版本:`2.7.11` -> `2.7.15` - 升级:借助 `flatten-maven-plugin` 统一版本号定义 (感谢 @ruansheng8 提交的pr) **[重要]** - 修复:修复在 `springboot 2.6.x` 下 `quick-login` 插件循环依赖无法启动的问题 - 优化:`sa-token-spring-aop` 依赖改为 `sa-token-core`,避免在webflux环境下启动报错的问题 - 优化:源码注释 设备标识 改为 设备类型 更符合语义 - 修复:解决部分协议下 dubbo 参数变为小写导致 `Id-Token` 鉴权无效的问题 - 升级:单元测试升级为 JUnit5 - 新增:新增 `maxLoginCount` 配置,指定同一账号可同时在线的最大数量 **[重要]** - 升级:彻底删除 SaTokenAction 接口,完全由 SaStrategy 代替 - 新增:新增 `sa-token-dao-redisx` 插件,感谢 @noear 提交的pr **[重要]** - 优化:增加 parseToken 未配置 jwt 密钥时的异常提示,感谢 @BATTLEHAWK00 提交的pr - 优化:sso,oauth2 插件中调用配置类使用 getter 方法,感谢 @Naah 提交的pr - 新增:新增 json 转换器模块 - 重构:SaTokenListener#doLogin 方法新增 tokenValue 参数 **[不向下兼容]** - 升级:SpringBoot 相关组件依赖版本升级至 `2.5.12` - 文档:在线文档所有 `AjaxJson` 改为 `SaResult` - 文档:“多账号认证” -> 改为 “多账户认证” - 文档:部分章节新增动态演示图 **[重要]** - 升级:顶级异常类 `SaTokenException` 增加 code 异常细分状态码。[详见](/fun/exception-code) **[重要]** - **注意升级:受异常细分状态码影响,`NotPermissionException` 类中 `getCode()` 方法改为 `getPermission()`。** **[不向下兼容]** - SSO 模块升级: - 重构:SSO 模块从核心包拆分为独立插件 `sa-token-sso` **[重要]** - 优化:SSO模式三单点注销回调方法中,注销语句改为:`stpLogic.logout(loginId)` 更符合情景 - 修复:解决 sso 构建认证地址时,部分 Servlet 版本内部实现不一致带来的双 back 参数问题。 - 升级:SSO 模块提供精细化异常处理 - 重构:SSO 模式三接口 `/sso/checkTicket`、`/sso/logout`,更改响应体格式 **[不向下兼容]** - 优化:SSO 模式三单点注销搭建示例增加 `try-catch`,提高容错性 - 优化:`SsoUtil.singleLogout` 改为 `SsoUtil.ssoLogout`,且无需再提供 secretkey 参数 **[不向下兼容]** - 升级:将 SSO 模式三的接口调用改为签名式校验。 **[重要]** **[不向下兼容]** - 新增:新增 SSO 模式三下无 sdk 的对接示例, 感谢 @Sa-药水 的建议反馈 **[重要]** - sa-token-jwt 模块升级: - 重构:`sa-token-jwt` 的创建,强制校验loginType **[不向下兼容]** - 重构:`StpLogicJwtForStateless` 由重写 login 方法改为重写 createLoginSession - 重构:`SaJwtUtil` 工具类不再吞并异常消息,且提供精细化异常 code 码。 - 重构:改名:StpLogicJwtForStyle -> StpLogicJwtForSimple - 重构:改名:StpLogicJwtForMix -> StpLogicJwtForMixin - 修复:修复 `StpLogicJwtForSimple` 模式下 Extra 数据可能受到旧 token 影响的bug ### v1.29.0 @2022-02-10 - 升级:sa-token-jwt插件可在登录时添加额外数据。 - 重构:优化Dubbo调用时向下传递Token的规则,可避免在项目启动时由于Context无效引发的bug。 - 重构:OAuth2 授权模式开放由全局配置和Client单独配置共同设定。 - 重构:OAuth2 模块部分属性支持每个 Client 单独配置。 - 重构:OAuth2 模块部分方法名修复单词拼写错误:converXxx -> convertXxx。 - 重构:修复 OAuth2 模块 `deleteAccessTokenIndex` 回收 token 不彻底的bug。 - 新增:OAuth2 模块新增 `pastClientTokenTimeout`,用于指定 PastClientToken 默认有效期。 - 文档:常见报错章节增加目录树,方便查阅。 - 文档:优化文档样式。 - 新增:新增 BCrypt 加密。 - 修复:修复StpUtil.getLoginIdByToken(token) 在部分场景下返回出错的bug。 - 重构:优化OAuth2模块密码式校验步骤。 - 新增:新增Jackson定制版Session,避免timeout属性的序列化。 - 新增:SaLoginModel新增setToken方法,用于预定本次登录产生的Token。 - 新增:新增 StpUtil.createLoginSession() 方法,用于无Token注入的方式创建登录会话。 - 新增:OAuth2 与 StpUtil 登录会话数据互通。 - 新增:新增 `StpUtil.renewTimeout(100);` 方法,用于 Token 的 Timeout 值续期。 - 修复:修复默认dao实现类中 `updateObject` 无效的bug - 完善:完善单元测试。 ### v1.28.0 @2021-11-5 - 新增:新增 `sa-token-jwt` 插件,用于与jwt的整合 **[重要]** - 新增:新增 `sa-token-context-dubbo` 插件,用于与 Dubbo 的整合 **[重要]** - 文档:文档新增章节:Sa-Token 插件开发指南 **[重要]** - 文档:文档新增章节:名称解释 - 优化:抽离 `getSaTokenDao()` 方法,方便重写 - 新增:单元测试新增多账号模式数据不互通测试 - 优化:优化在线文档,修复部分错误之处 - 优化:优化未登录异常抛出提示,标注无效的Token值 - 修复:修复单词拼写错误 `getDeviceOrDefault` - 优化:优化 jwt 集成示例 - 文档:新增常见问题总结 ### v1.27.0 @2021-10-11 - 升级:增强 SaRouter 链式匹配能力 **[重要]** - 新增:新增插件 Thymeleaf 标签方言 **[重要]** - 新增:@SaCheckPermission 增加 orRole 字段,用于权限角色“双重or”匹配 **[重要]** - 升级:Cookie模式增加 `secure`、`httpOnly`、`sameSite`等属性的配置 **[重要]** - 重构:重构SSO三种模式,抽离出统一的认证中心 **[重要]** - 新增:新增 SaStrategy 策略类,方便内部逻辑按需重写 **[重要]** - 新增:临时认证模块新增 deleteToken 方法用于回收 Token - 新增:新增 kickout、replaced 等注销会话的方法,更灵活的控制会话周期 **[重要]** - 新增:权限认证增加API:`StpUtil.hasPermissionAnd`、`StpUtil.hasPermissionOr` - 新增:角色认证增加API:`StpUtil.hasRoleAnd`、`StpUtil.hasRoleOr` - 新增:新增 `StpUtil.getRoleList()` 和 `StpUtil.getPermissionList()` 方法 - 新增:新增 StpLogic 自动注入特性,可快速方便的扩展 StpLogic 对象 - 优化:优化同端互斥登录逻辑,如果登录时没有指定设备类型标识,则默认顶替所有设备类型下线 - 优化:在未登录时调用 hasRole 和 hasPermission 不再抛出异常,而是返回false - 升级:升级注解鉴权算法,并提供更简单的重写方式 - 文档:新增常见报错排查,方便快速排查异常报错 - 文档:文档新增SSO单点登录与OAuth2技术选型对比 - 破坏式更新: - [向下兼容] 废弃 SaTokenAction 接口,替代方案: SaStrategy - [向下兼容] 移除 `StpUtil.logoutByLoginId()` 更换为 `StpUtil.kickout()`; - [不向下兼容] 侦听器 doLogoutByLoginId 与 doReplaced 方法移除 device 参数 - [不向下兼容] 侦听器 doLogoutByLoginId 方法重命名为 doKickout ### v1.26.0 @2021-9-2 - 优化:优化单点登录文档 - 新增:新增 `Http Basic` 认证 **[重要]** - 新增:文档新增跨域解决方案 - 文档:新增 Nginx 转发请求丢失uri的解决方案 - 文档:新增 SSO 自定义 API 路由示例 **[重要]** - 示例:新增 `SSO-Server` 端前后端分离示例 **[重要]** ### v1.25.0 @2021-8-16 - 新增:`SaRequest`新增`getHeader(name, defaultValue)`方法,用于获取header默认值 - 新增:`SaRequest` 添加 `forward` 转发方法 - 新增:Readme新增源码模块介绍、友情链接、正在使用Sa-Token的项目 - 重构:重构SSO单点登录模块源码,增加可读性 - 新增:SSO配置表新增所属端说明 - 新增:SSO模式三新增账号资料同步示例 **[重要]** - 新增:前后端分离模式下接入SSO的示例 **[重要]** - 优化:优化SSO单点注销重定向逻辑 - 重构:重构SSO单点登录模块部分API - 优化:优化SaQuickBean中过滤器处理逻辑 - 文档:优化文档样式,增加示例 - 文档:代码鉴权、注解鉴权、路由拦截鉴权,选择指南 - 文档:文档新增 SSO旧有系统改造指南 - 文档:SSO集成文档里添加API列表 - 文档:新增 `Sa-Token-Study` 链接,讲解 Sa-Token 源码涉及到的技术点 - 不兼容更新重构: - 重构:修复 `SaReactorHolder.getContent()` 拼写错误:`content` -> `context` ### v1.24.0 @2021-7-24 - 修复:修复部分场景下Alone-Redis插件导致项目无法启动的问题 - 优化:增加对SpringBoot1.x版本的兼容性 - 新增:SaOAuth2Util新增checkScope函数,用于校验令牌是否具备指定权限 - 新增:OAuth2.0模块新增revoke接口,用于提前回收 Access-Token 令牌 - 新增:新增`Sa-Id-Token` 模块,解决微服务内部调用鉴权 **[重要]** - 文档:新增OAuth2.0模块常用方法说明 - 优化:大幅度优化文档示例 ### v1.23.0 @2021-7-19 - 新增:Sa-Token-OAuth2 模块正式发布 **[重要]** - 修复:修复jwt集成demo无法正确注册StpLogic的bug - 修复:修复登录时某些场景下Session续期可能不正常的bug - 优化:代码注释优化,文档优化 ### v1.22.0 @2021-7-10 - 新增:SaSsoConfig 部分属性增加set连缀风格 - 优化:SaSsoUtil 可定制化底层的 `StpLogic` - 新增:新增 `SaSsoHandle` 大幅度简化单点登录整合步骤 **[重要]** - 新增:新增Sa-Token在线测评,链接:[https://ks.wjx.top/vj/wFKPziD.aspx](https://ks.wjx.top/vj/wFKPziD.aspx) **[重要]** - 新增:Sa-Token-Quick-Login 插件新增拦截与放行路径配置 - 优化:大幅度优化文档示例 ### v1.21.0 @2021-7-2 - 新增:新增Token二级认证 **[重要]** - 新增:新增`Sa-Token-Alone-Redis`独立Redis插件 **[重要]** - 新增:新增SSO三种模式,彻底解决所有场景下的单点登录问题 **[重要]** - 新增:新增多账号模式下,注解合并示例 **[重要]** - 新增:新增`SaRouter.back()`函数,用于停止匹配返回结果 - 不兼容更新重构: - 更改yml配置前缀:原`[spring.sa-token.]` 改为 `[sa-token.]`,目前版本暂时向下兼容,请尽快更新 ### v1.20.0 @2021-6-17 - 新增:新增Solon适配插件,感谢大佬 `@刘西东` 提供的pr **[重要]** - 新增:新增`SaRouter.stop()`函数,用于一次性跳出匹配链功能 **[重要]** - 新增:新增单元测试 **[重要]** - 新增:新增临时令牌验证模块 **[重要]** - 新增:新增`sa-token-temp-jwt`模块整合jwt临时令牌鉴权 **[重要]** - 新增:会话 `SaSession.get()` 增加缓存API,简化代码 - 新增:新增框架调查问卷 - 修复:修复同时引入 `Spring Cloud Bus` 与 `Sa-Token` 冲突的问题 **[重要]** - 修复:修复`SaServletFilter`异常函数中无法自定义`Content-Type`的问题 - 文档:新增微服务依赖引入说明 - 文档:新增认证流程图 - 不兼容更新重构: - 方法:`StpUtil.setLoginId(id)` -> `StpUtil.login(id)` - 方法:`StpUtil.getLoginKey()` -> `StpUtil.getLoginType()` (注意其它所有地方的`LoginKey`均已更改为`loginType`) - 工具类:`SaRouterUtil` -> `SaRouter` - 配置类:`allowConcurrentLogin` -> `isConcurrent` - 配置类:`isV` -> `isPrint` - 为保证平滑更新,旧API仍旧保留,但已增加`@Deprecated`注解,请尽快更新至新API ### v1.19.0 @2021-5-10 - 新增:注解鉴权新增定制loginType功能 **[重要]** - 重构:重构目录结构,抽离`plugin`模块 **[重要]** - 新增:新增 `sa-token-quick-login` 插件,零代码集成登录功能 **[重要]** - 优化:所有函数式接口增加`@FunctionalInterface`注解,感谢群友`@MrXionGe`提供的建议 - 优化:文档优化... ### v1.18.0 @2021-4-24 - 新增:新增权限通配符功能,灵活设置权限 **[重要]** - 修复:修复自动续签处的逻辑错误 - 新增:新增Web开发常见漏洞防护建议 - 修复:修复`SaRequest`中缺少`getMethod()`的bug - 修复:修复自动续签时的逻辑错误,感谢群成员`@N`的建议 - 新增:全局过滤器新增 `beforAuth` 前置函数 - 修复:修复在带有上下文的项目中无法正确获取请求路径的bug,感谢群成员`@dlwlrma`提供的建议 - 新增:新增`SaHolder`上下文持有类,可方便的在上下文中读写数据 - 重构:`SaTokenManager` -> `SaManager` - 重构:`SaTokenInsideUtil` -> `SaFoxUtil` ### v1.17.0 @2021-4-17 - 修复:在WebFlux环境中引入Redis集成包无法启动的问题 - 修复:修复JWT集成示例中版本升级API的变更 - 优化:优化启动时字符画打印 - 文档:新增集成环境说明 - 文档:新增功能介绍图 - 新增:全局过滤器增加限定[拦截路径]与[排除路径]功能 - 重构:全局过滤器执行函数放到成员变量里,连缀风格配置 - 新增:新增全局侦听器,可在用户登陆、注销、被踢下线等关键性操作时进行一些AOP操作 **[重要]** ### v1.16.0 @2021-4-12 - 新增:新增账号封禁功能,指定时间内账号无法登陆 **[重要]** - 新增:核心包脱离`ServletAPI`,彻底零依赖! **[重要]** - 新增:新增基于`ThreadLocal`的上下文容器 **[重要]** - 新增:新增`Reactor`响应式编程支持,`WebFlux`集成! **[重要]** - 新增:新增全局过滤器,解决拦截器无法拦截静态资源的问题 **[重要]** - 新增:新增微服务网关鉴权方案!可接入`ShenYu`、`Gateway`等网关组件! **[重要]** - 新增:AOP切面定义`Order`顺序为`-100`,可保证在多个自定义切面前执行 - 文档:新增推荐公众号列表 ### v1.15.0 @2021-3-23 - 新增:文档添加源码涉及技术栈说明 - 优化:优化路由拦截器模块文档,更简洁的示例 - 修复:修复非web环境下的错误提示,Request->Response - 修复:修复Cookie注入时path判断错误,感谢@zhangzi0291提供的PR - 新增:文档集成Redis章节新增redis配置示例说明,感谢群友 `@-)` 提供的建议 - 新增:增加token前缀模式,可在配置token读取前缀,适配`Bearer token`规范 **[重要]** - 优化:`SaTokenManager`初始化Bean去除`initXxx`方法,优化代码逻辑 - 新增:`SaTokenManager`新增`stpLogicMap`集合,记录所有`StpLogic`的初始化,方便查找 - 新增:`Session`新增timeout操作API,可灵活修改Session的剩余有效时间 - 新增:token前缀改为强制校验模式,如果配置了前缀,则前端提交token时必须带有 - 优化:精简`SaRouteInterceptor`,只保留自定义验证和默认的登陆验证,去除冗余功能 - 优化:`SaRouterUtil`迁移到core核心包,优化依赖架构 - 优化:默认Dao实现类里`Timer定时器`改为子线程 + sleep 模拟 - 新增:`Session`新增各种类型转换API,可快速方便存取值 **[重要]** - 升级注意: - `SaRouterUtil`类迁移到核心包,注意更换import地址 - `SaRouteInterceptor`去出冗余API,详情参考路由鉴权部分 ### v1.14.0 @2021-3-12 - 新增:新增`SaLoginModel`登录参数Model,适配 [记住我] 模式 **[重要]** - 新增:新增 `StpUtil.login()` 时指定token有效期,可灵活控制用户的一次登录免验证时长 - 新增:新增Cookie时间判断,在`timeout`设置为-1时,`Cookie`有效期将为`Integer.MAX_VALUE` **[重要]** - 新增:新增密码加密工具类,可快速MD5、SHA1、SHA256、AES、RSA加密 **[重要]** - 新增:新增 OAuth2.0 模块 **[重要]** - 新增:`SaTokenConfig`配置类所有set方法支持链式调用 - 新增:`SaOAuth2Config` sa-token oauth2 配置类所有set方法新增支持链式调用 - 优化:`StpLogic`类所有`getKey`方法重名为`splicingKey`,更语义化的函数名称 - 新增:`IsRunFunction`新增`noExe`函数,用于指定当`isRun`值为`false`时执行的函数 - 新增:`SaSession`新增数据存取值操作API - 优化:优化`SaTokenDao`接口,增加Object操作API - 优化:jwt示例`createToken`方法去除默认秘钥判断,只在启动项目时打印警告 - 文档:常见问题新增示例(修改密码后如何立即掉线) - 文档:权限认证文档新增[如何把权限精确搭到按钮级]示例说明 - 文档:优化文档,部分模块添加图片说明 ### v1.13.0 @2021-2-9 - 优化:优化源码注释与文档 - 新增:文档集成Gitalk评论系统 - 优化:源码包`Maven`版本号更改为变量形式 - 修复:文档处方法名`getPermissionList`错误的bug - 修复:修复`StpUtil.getTokenInfo()`会触发自动续签的bug - 修复:修复接口 `SaTokenDao` 的 `searchData` 函数注释错误 - 新增:`SaSession`的创建抽象到`SaTokenAction`接口,方便按需重写 - 新建:框架内异常统一继承 `SaTokenException` 方便在异常处理时分辨处理 - 新增:`SaSession`新增`setId()`与`setCreateTime()`方法,方便部分框架的序列化 - 新增:新增`autoRenew`配置,用于控制是否打开自动续签模式 - 新增:同域模式下的单点登录 **[重要]** - 新增:完善分布式会话的文档说明 ### v1.12.0 @2021-1-12 - 新增:提供JWT集成示例 **[重要]** - 新增:新增路由式鉴权,可方便的根据路由匹配鉴权 **[重要]** - 新增:新增身份临时切换功能,可在一个代码段内将会话临时切换为其它账号 **[重要]** - 优化:将`SaCheckInterceptor.java`更名为`SaAnnotationInterceptor.java`,更语义化的名称 - 优化:优化文档 - 升级:v1.12.1,新增`SaRouterUtil`工具类,更方便的路由鉴权 **[重要]** ### v1.11.0 @2021-1-10 - 新增:提供AOP注解鉴权方案 **[重要]** - 优化自动生成token的算法 ### v1.10.0 @2021-1-9 - 新增:提供查询所有会话方案 **[重要]** - 修复:修复token设置为永不过期时无法正常被顶下线的bug,感谢github用户 @zjh599245299 提出的bug ### v1.9.0 @2021-1-6 - 优化:`spring-boot-starter-data-redis` 由 `2.3.7.RELEASE` 改为 `2.3.3.RELEASE` - 修复:补上注解拦截器里漏掉验证`@SaCheckRole`的bug - 新增:新增同端互斥登录,像QQ一样手机电脑同时在线,但是两个手机上互斥登录 **[重要]** ### v1.8.0 @2021-1-2 - 优化:优化源码注释 - 修复:修复部分文档错别字 - 修复:修复项目文件夹名称错误 - 优化:优化文档配色,更舒服的代码展示 - 新增:提供`sa-token`集成 `redis` 的 `spring-boot-starter` 方案 **[重要]** - 新增:新增集成 `redis` 时,以`jackson`作为序列化方案 **[重要]** - 新增:dao层默认实现增加定时清理过期数据功能 **[重要]** - 新增:新增`token专属session`, 更灵活的会话管理 **[重要]** - 新增:增加配置,指定在获取`token专属session`时是否必须登录 - 新增:在无token时自动创建会话,完美兼容`token-session`会话模型! **[重要]** - 修改:权限码限定必须为String类型 - 优化:注解验证模式由boolean属性改为枚举方式 - 删除:`StpUtil`删除部分冗长API,保持API清爽性 - 新增:新增角色验证 (角色验证与权限验证已完全分离) **[重要]** - 优化:移除`StpUtil.kickoutByLoginId()`API,由`logoutByLoginId`代替 - 升级:开源协议修改为`Apache-2.0` ### v1.7.0 @2020-12-24 - 优化:项目架构改为maven多模块形式,方便增加新模块 **[重要]** - 优化:与`springboot`的集成改为`springboot-starter`模式,无需`@SaTokenSetup`注解即可完成自动装配 **[重要]** - 新增:新增`activity-timeout`配置,可控制token临时过期与续签功能 **[重要]** - 新增:`timeout`过期时间新增-1值,代表永不过期 - 新增:`StpUtil.getTokenInfo()`改为对象形式,新增部分常用字段 - 优化:解决在无cookie模式下,不集成redis时会话无法主动过期的问题 - 修复:修复文档首页样式问题 ### v1.6.0 @2020-12-17 - 新增:花式token生成方案 **[重要]** - 优化:优化`readme.md` - 修复:修复`SaCookieOper`与`SaTokenAction`无法自动注入的问题 ### v1.5.1 @2020-12-16 - 新增:细化未登录异常类型,提供五种场景值:未提供token、token无效、token已过期 、token已被顶下线、token已被踢下线 **[重要]** - 修复:修复`StpUtil.getSessionByLoginId(String loginId)`方法转换key出错的bug,感谢群友 @(#°Д°)、@一米阳光 发现的bug - 优化:修改方法`StpUtil.getSessionByLoginId(Object loginId)`的isCreate值默认为true - 修改:`方法delSaSession`修改为`deleteSaSession`,更加语义化的函数名称 - 新增:新增`StpUtil.getTokenName()`方法,更语义化的获取tokenName - 新增:新增`SaTokenAction`框架行为Bean,方便重写逻辑 - 优化:`Cookie操作`改为接口代理模式,使其可以被重写 - 优化:文档里集成redis部分增加redis的pom依赖示例 - 修复:登录验证-> `StpUtil.getLoginId_defaultNull()` 修复方法名错误的问题 - 优化:优化`readme.md` - 升级:开源协议修改为`MIT` ### v1.4.0 @2020-9-7 - 优化:修改一些函数、变量名称,使其更符合阿里java代码规范 - 优化:`tokenValue`的读取优先级改为:`request` > `body` > `header` > `cookie` **[重要]** - 新增:新增`isReadCookie`配置,决定是否从`cookie`里读取`token`信息 - 优化:如果`isReadCookie`配置为`false`,那么在登录时也不会把`cookie`写入`cookie` - 新增:新增`getSessionByLoginId(Object loginId, boolean isCreate)`方法 - 修复:修复文档部分错误,修正群号码 ### v1.3.0 @2020-5-2 - 新增:新增 `StpUtil.checkLogin()` 方法,更符合语义化的鉴权方法 - 新增:注册拦截器时可设置 `StpLogic` ,方便不同模块不同鉴权方式 - 新增:抛出异常时增加 `loginType` 区分,方便多账号体系鉴权处理 - 修复:修复启动时的版本字符画版本号打印不对的bug - 修复:修复文档部分不正确之处 - 新增:新增文档的友情链接 ### v1.2.0 @2020-3-7 - 新增:新增注解式验证,可在路由方法中使用注解进行权限验证 **[重要]** - 参考:[注解式验证](use/at-check) ### v1.1.0 @2020-2-12 - 修复:修复`StpUtil.getLoginId(T defaultValue)`取值转换错误的bug ### v1.0.0 @2020-2-4 - 第一个版本出炉