SaToken
简介
continew-starter-auth-satoken 是 ContiNew Starter 认证模块针对 SaToken 框架的扩展实现,通过简单的配置即可快速集成 SaToken 到项目中。
SaToken
Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。
主要特性
- 默认配置:SaToken 样板化配置处理,减少配置工作量
- 灵活的持久层:提供自定义 Redisson 持久层实现,只需配置 Redis 连接信息即可使用;同时支持自定义持久层实现
- 安全防护:内置常见路径排除机制,自动放行静态资源、接口文档等无需认证的路径
- 扩展功能:支持与 JWT 集成,满足分布式系统认证需求
快速开始
引入依赖
xml
<dependency> <groupId>top.continew.starter</groupId> <artifactId>continew-starter-auth-satoken</artifactId> </dependency>添加配置
配置详情请查看:top.continew.starter.auth.satoken.autoconfigure.SaTokenExtensionProperties。
yaml
--- ### Sa-Token 配置 sa-token: # Token 名称(同时也是 cookie 名称) token-name: Authorization # Token 有效期(单位:秒,默认 30 天,-1 代表永不过期) timeout: 86400 # Token 最低活跃频率(单位:秒,默认 -1,代表不限制,永不冻结。如果 token 超过此时间没有访问系统就会被冻结) active-timeout: 1800 # 是否打开自动续签(如果此值为 true,框架会在每次直接或间接调用 getLoginId() 时进行一次过期检查与续签操作) auto-renew: true # 是否允许同一账号多地同时登录(为 true 时允许一起登录,为 false 时新登录挤掉旧登录) is-concurrent: true # 在多人登录同一账号时,是否共用一个 Token(为 true 时所有登录共用一个 Token,为 false 时每次登录新建一个 Token) is-share: false # 是否输出操作日志 is-log: false # JWT 秘钥 jwt-secret-key: asdasdasifhueuiwyurfewbfjsdafjk ## 扩展配置 extension: enabled: true enableJwt: true # 持久层配置 dao.type: REDIS # 安全配置:排除(放行)路径配置 security.excludes: - /error # 静态资源 - /*.html - /*/*.html - /*/*.css - /*/*.js - /websocket/** # 接口文档相关资源 - /favicon.ico - /doc.html - /webjars/** - /swagger-ui/** - /swagger-resources/** - /*/api-docs/**已提供样板化配置,如需修改,直接覆盖即可。
yaml
sa-token: # token 前缀(例如填写 Bearer,实际传参 token 键: Bearer xxxx-xxxx-xxxx-xxxx) token-prefix: Bearer # 是否尝试从 请求体 里读取 Token is-read-body: true # 是否尝试从 header 里读取 Token is-read-header: true # 是否尝试从 cookie 里读取 Token(此值为 false 后,StpUtil.login(id) 登录时也不会再往前端注入 Cookie,适合前后端分离模式) is-read-cookie: false自定义持久层
如果需要自定义持久层实现,请修改配置,并实现 cn.dev33.satoken.dao.SaTokenDao 接口,注入到容器中。
yaml
--- ### Sa-Token 配置 sa-token: ## 扩展配置 extension: enabled: true enableJwt: true # 持久层配置 dao.type: CUSTOM自定义拦截器
如果需要自定义拦截器,只需要参考如下配置注入你的拦截器即可,因为配置了 @ConditionalOnMissingBean 所以会自动覆盖默认的拦截器。
java
/** * SaToken 拦截器配置 */ @Bean public SaInterceptor saInterceptor() { return new SaInterceptor(handle -> SaRouter.match(StringConstants.PATH_PATTERN) .notMatch(properties.getSecurity().getExcludes()) .check(r -> StpUtil.checkLogin())); }核心依赖
| 依赖 | 描述 |
|---|---|
| top.continew.starter:continew-starter-cache-redisson(optional) | 缓存模块 - Redisson |
| cn.dev33:sa-token-spring-boot3-starter | Sa-Token(轻量级 Java 权限认证框架,让鉴权变得简单、优雅) |
| cn.dev33:sa-token-jwt | Sa-Token 整合 JWT |
| cn.dev33:sa-token-redisson | Sa-Token 集成 Redisson 客户端 |
参考资料
- SaToken 官方文档:https://sa-token.cc/