Sa Token Versions Save

这可能是史上功能最全的Java权限认证框架!目前已集成——登录认证、权限认证、分布式Session会话、微服务网关鉴权、单点登录、OAuth2.0、踢人下线、Redis集成、前后台分离、记住我模式、模拟他人账号、临时身份切换、账号封禁、多账号认证体系、注解式鉴权、路由拦截式鉴权、花式token生成、自动续签、同端互斥登录、会话治理、密码加密、jwt集成、Spring集成、WebFlux集成...

v1.37.0

6 months ago
  • 修复:修复路由拦截鉴权可被绕过的问题。 [漏洞修复]
  • 重构:未登录时调用鉴权 API 抛出未登录异常而不再是无权限异常。
  • 优化:优化 SaTokenDao 组件更换时的逻辑。
  • 文档:提供 SpringBoot3.x 路由匹配出错的解决方案。

v1.36.0

6 months ago
  • 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

9 months ago
  • sa-token-core:

    • 优化:前端未提供 token 时,getTokenSession() 将抛出未登录异常,而不是返回 null。 [不向下兼容]
    • 新增:SaSession 新增字段:typeloginTypeloginIdtoken
    • 重构:全局过滤器抽离 SaFilter 统一接口。
    • 重构:全局过滤器 includeListexcludeList 改为 public,同时移除对应的 getter 方法。 [不向下兼容]
    • 重构:将全局过滤器的 BeforeAuth 认证设为不受 includeListexcludeList 的限制,所有请求都会进入。 [不向下兼容]
    • 新增:新增循环生成 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

1 year ago
  • 新增:新增 SpringBoot3.x 集成插件,感谢 @jry 提供的参考思路。 [重要]
  • 新增:新增 sa-token-dao-redisson-jackson 插件,感谢 @疯狂的狮子Li 提交的pr。 [重要]
  • 新增:Alone-Redis 新增集群配置能力,感谢 @appleOfGray 提交的pr。 [重要]
  • 升级:升级 Sign 签名模块,增加部分重载方法。
  • 重构:SaSignTemplate#joinParams 更名为 joinParamsDictSort[不向下兼容]
  • 升级:升级临时 Token 认证模块,可指定 service 参数。
  • 删除:彻底删除过期类 SaAnnotationInterceptorSaRouteInterceptor
  • 删除:SSO 模块移除过期类 SaSsoHandle 类。
  • 新增:SSO 模块增加 ticket 的 client 锁定功能,解决部分场景下的 ticket 劫持问题。 [重要]
  • 修复:修复 SSO 模式2,在 client 端配置 is-share=false 时无法单点注销的问题。
  • 修复:修复 SSO 模式3 部分场景下注销时无法正常回退页面的问题。
  • 修复:修复 OAuth2 模块示例 getClientModel 方法 clientId 写错的问题。
  • 重构:使用 jwt-simple 模式后 is-share 恒等于 false,无论是否有设定 setExtra 数据。
  • 修复:修复源码注释和文档的部分不合适之处。

v1.33.0

1 year ago
  • 重构:重构异常状态码机制。 [重要]
  • 重构:重构 sa-token-sso 模块异常码改为 300 开头,sa-token-jwt 异常码改为 302 开头。 [不向下兼容]
  • 新增:新增全局 Log 模块。 [重要]
  • 重构:SaTokenListenerForConsolePrint 改名 SaTokenListenerForLog。 [不向下兼容]
  • 修复:修复多线程下 SaFoxUtil.getRandomString() 随机数重复问题。
  • 文档:文档优化。

v1.32.0

1 year ago
  • 修复:修复 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-serversso-client 的示例。 [重要]
  • 新增:SSO模块文档新增一个项目同时搭建两个 sso-server 服务 的示例。 [重要]
  • 文档:在线文档新增代码示例。
  • 文档:在线文档增加全局调色功能。
  • 文档:[自定义 SaTokenContext 指南] 章节新增对三种模型的解释。
  • 文档:新增多账号体系混合鉴权代码示例。
  • 文档:文档增加 Gradle 依赖方式和 properties 风格配置。
  • 新增:新增 sa-token-dependencies,统一定义依赖版本。 [重要]

v1.31.0

1 year ago
  • 文档:新增优秀开源案例展示。
  • 文档:新增博客展示,欢迎大家投稿。
  • 新增:新增 SaInterceptor 综合拦截器。 [重要] [不向下兼容]
  • 新增:新增 新增 @SaIgnore 忽略鉴权注解。 [重要]
  • 新增:新增插件 sa-token-dao-redis-fastjson,感谢 @sikadai 提交的pr。 [重要]
  • 新增:新增插件 sa-token-context-grpc,感谢 @LiYiMing666 提交的pr。 [重要]
  • 重构:SaSession 取消 tokenSignList 的 final 修饰符。
  • 新增:SaSession 添加 setTokenSignList 方法。
  • 重构:TokenSign 新增 setValuesetDevice 方法。
  • 修复:修复多账号模式下不能正确重置 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

v1.30.0

1 year ago
  • 新增:新增集成 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.xquick-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 异常细分状态码。详见 [重要]
  • 注意升级:受异常细分状态码影响,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

2 years ago
  • 升级: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

2 years ago
  • 新增:新增 sa-token-jwt 插件,用于与jwt的整合 [重要]
  • 新增:新增 sa-token-context-dubbo 插件,用于与 Dubbo 的整合 [重要]
  • 文档:文档新增章节:Sa-Token 插件开发指南 [重要]
  • 文档:文档新增章节:名称解释
  • 优化:抽离 getSaTokenDao() 方法,方便重写
  • 新增:单元测试新增多账号模式数据不互通测试
  • 优化:优化在线文档,修复部分错误之处
  • 优化:优化未登录异常抛出提示,标注无效的Token值
  • 修复:修复单词拼写错误 getDeviceOrDefault
  • 优化:优化 jwt 集成示例
  • 文档:新增常见问题总结