ErrLookup › dromara/Sa-Token
dromara/Sa-Token
✨ 开源、免费、一站式 Java 权限认证框架,让鉴权变得简单、优雅!—— 登录认证、权限认证、分布式 Session 会话、微服务网关鉴权、SSO 单点登录、OAuth2.0 统一认证、jwt 集成、API Key 秘钥授权、API 参数签名 · Java · 899 source files
Analyzed at ac2c7f6e94 on 2026-08-14. 138 documented errors.
| Code / Message | Type | Severity | Tags |
|---|---|---|---|
10002 未能获取对应StpLogic,type=" + loginType | exception | error | jfinal, routing, infinite-loop, forward, sa-token |
| 注解参数配置错误,格式应如:username:password | validation | critical | spring-boot, version-mismatch, reactor, webflux, classpath, startup |
10002 SaTokenContext 上下文尚未初始化 | exception | error | sa-token, thread-local, async, context, background-job |
12002 name不能为空 | validation | error | sa-token, cookie, validation, configuration |
12003 无效Value:" + value | validation | error | sa-token, cookie, header-injection, encoding, validation |
12001 缺少参数:" + name | validation | warning | sa-token, request, parameter, bad-request, validation |
10004 HTTP 请求处理器未实现 | exception | error | sa-token, http-client, sso, oauth2, dependency |
| UsernameAndPassword 不能为空 | validation | error | sa-token, http-basic, authentication, configuration, validation |
| UsernameAndPassword 格式错误,正确格式为:username:password | validation | error | sa-token, http-basic, authentication, parsing, validation |
10312 no http digest auth | http | error | http-digest, authentication, http-401, sa-token |
| 未配置全局 Http Digest 认证参数 | validation | error | http-digest, configuration, sa-token |
| 全局 Http Digest 认证参数配置错误,格式应如:username:password | validation | error | http-digest, configuration, validation, sa-token |
| 注解参数配置错误,格式应如:username:password | validation | error | http-digest, annotation, configuration, sa-token |
10003 未实现具体的 json 转换器 | exception | error | json, dependency, diy-template, sa-token |
10031 重置的侦听器集合不可以为空 | validation | error | event-listener, validation, null-safety, sa-token |
10032 注册的侦听器不可以为空 | validation | error | event-listener, validation, null-safety, sa-token |
| SPI 插件加载失败: " + e.getMessage() | exception | error | spi, plugin-system, classpath, packaging, sa-token |
| 插件不可为空 | validation | error | plugin-system, validation, null-safety, sa-token |
| 插件 [ " + plugin.getClass().getCanonicalName() + " ] 已安装,不可重复 | validation | error | plugin-system, duplicate-registration, lifecycle, sa-token |
| 插件 [ | exception | error | plugin-system, lifecycle, state-validation, sa-token |
10321 Method 不可以是 null | exception | error | sa-token, http-method, null-check, router |
11072 SessionId 不能为空 | exception | error | session, validation, stp-logic |
| Account-Session 获取失败:loginId 不能为空 | exception | error | session, login-id, validation |
12401 未实现具体路由匹配策略 | exception | error | sa-token, routing, configuration, integration |
| 非法请求:{requestPath} | exception | error | sa-token, firewall, security, request-path |
| 非法请求:{requestPath} | exception | error | sa-token, firewall, security, directory-traversal, request-path |
| 非法请求头:{headerName} | exception | error | sa-token, firewall, security, http-headers |
| 非法请求 host:{host} | exception | error | sa-token, firewall, security, host-header |
| 非法请求 Method:{method} | exception | error | sa-token, firewall, security, http-method |
| 非法请求参数:{parameterName} | exception | error | sa-token, firewall, security, request-parameters |
| 请求 path 包含禁止字符:{requestPath} | exception | error | sa-token, firewall, security, request-path, injection |
| 请求 path 包含禁止字符 %:{requestPath} | exception | error | sa-token, firewall, security, url-encoding, request-path |
| 非法请求:{requestPath} | exception | error | sa-token, firewall, security, xss, request-path |
| namespace 不能为空 | exception | error | sa-token, temp-token, validation, configuration |
| 裁剪前缀长度必须小于 32 位 | exception | error | sa-token, temp-token, validation, input-length |
| 转换失败: {e.getMessage()} | exception | error | sa-token, reflection, type-conversion, utilities |
12103 {cause} | exception | info | sa-token, url-encoding, unreachable, utilities |
12104 {cause} | exception | info | sa-token, url-decoding, unreachable, utilities |
| Hex string must have even length | exception | error | sa-token, hex, encoding, input-validation |
| Invalid hex character at position ${i} or ${i+1} | validation | error | sa-token, hex, encoding, input-validation |
| 账号或密码错误,未通过校验 | validation | warning | sa-token, demo, custom-annotation, authentication |
| 设备id或用户id不能为空 | validation | warning | sa-token, demo, device-lock, validation |
| 此设备id目前未绑定任何用户 | exception | warning | sa-token, demo, device-lock, cache-expiry |
| 验证码错误 | validation | error | sms, verification-code, sa-token-dao, demo |
| 值无法转化为SoMap: ${value} | exception | error | somap, oauth2-client, type-conversion, json |
| 属性取值出错:${fieldName} | exception | error | reflection, somap, bean-binding, jdk-strong-encapsulation |
| 参数${key}不能为空 | validation | warning | validation, somap, required-params, oauth2-client |
| 当前线程非JavaWeb环境 | exception | error | spring-mvc, thread-context, requestcontextholder, async |
30125 无效 response_type: ${responseType} | http | error | oauth2, response-type, authorize-endpoint, sa-token |
| 账号或密码错误,未通过校验 | validation | warning | custom-annotation, solon, auth, demo |
| 无效 token | validation | error | sse, not-login, token-invalid, sa-token |
| 当前会话未登录 | validation | error | sso, httpsession, not-login, demo |
| 连接失败,无效Token:${satoken} | validation | error | websocket, token-invalid, onopen, sa-token |
| Alone-Redis 集群模式需要配置 cluster.nodes | validation | critical | alone-redis, redis-cluster, spring-boot4, configuration |
| Alone-Redis 哨兵模式需要配置 sentinel.nodes | validation | critical | alone-redis, redis-sentinel, spring-boot4, configuration |
| SaToken 无法识别 Alone-Redis 配置的模式: ${pattern} | validation | critical | alone-redis, configuration, pattern, spring-boot4 |
| 未引入 sa-token-redis-xxx 相关插件,或引入的插件不在 Alone-Redis 支持范围内 | exception | critical | alone-redis, dependency-missing, sa-token-dao, spring-boot4 |
| SaToken 无法识别 Alone-Redis 配置的模式: ${pattern} | validation | critical | alone-redis, configuration, pattern, legacy-plugin |
| 未引入 sa-token-redis-xxx 相关插件,或引入的插件不在 Alone-Redis 支持范围内 | exception | critical | alone-redis, dependency-missing, sa-token-dao, legacy-plugin |
| 请配置 sa-token.alone-redisson.config 或 sa-token.alone-redisson | validation | critical | alone-redisson, redisson, configuration, missing-config |
| 解析 sa-token.alone-redisson 配置失败 | exception | critical | alone-redisson, yaml, redisson, config-parse |
| 未找到 Redisson 配置文件: ${file} | validation | critical | alone-redisson, resource-not-found, classpath, configuration |
12304 ApiKey 值不可为空 | validation | error | apikey, validation, sa-token-plugin, code-12304 |
12301 无效 API Key: | exception | error | sa-token, apikey, auth, not-found |
12302 API Key 已过期: | exception | error | sa-token, apikey, auth, expiry |
12303 API Key 已被禁用: | exception | error | sa-token, apikey, auth, disabled |
12311 该 API Key 不具备 Scope: | exception | error | sa-token, apikey, authorization, scope |
12312 该 API Key 不属于用户: | exception | error | sa-token, apikey, authorization, ownership |
| 请配置 jwt 秘钥 | exception | critical | sa-token, jwt, configuration, secret |
| jwt 字符串不可为空 | validation | error | sa-token, jwt, validation, null-check |
30201 jwt 解析失败: | exception | error | sa-token, jwt, parse, malformed-token |
30202 jwt 签名无效: | exception | critical | sa-token, jwt, signature, security, configuration |
30203 jwt loginType 无效: | exception | error | sa-token, jwt, login-type, multi-account |
30204 jwt 已过期: | exception | error | sa-token, jwt, expiry, clock-skew |
| Token-Session 获取失败:token 不能为空 | validation | error | sa-token, jwt, session, empty-token |
30127 多次请求的 state 不可重复: | exception | warning | sa-token, oauth2, csrf, state, replay |
30105 无效 client_id: | exception | error | sa-token, oauth2, client-id, configuration |
30101 client_id 不可为空 | validation | error | oauth2, validation, client-id, sa-token |
30102 scope 不可为空 | validation | error | oauth2, validation, scope, sa-token |
30103 redirect_uri 不可为空 | validation | error | oauth2, validation, redirect-uri, sa-token |
30104 LoginId 不可为空 | validation | error | oauth2, validation, login-id, session, sa-token |
30191 请提供 client 信息 | validation | error | oauth2, client-credentials, basic-auth, sa-token |
30161 登录失败 | exception | error | oauth2, password-grant, authentication, sa-token |
30125 无效 response_type: | exception | error | oauth2, response-type, authorize, sa-token |
30151 无效请求方式: | exception | error | oauth2, http-method, consent, sa-token |
30126 无效 grant_type: | exception | error | oauth2, grant-type, client-credentials, sa-token |
30141 系统暂未开放此授权模式 | exception | error | oauth2, configuration, feature-flag, sa-token |
30142 应用暂未开放此授权模式 | exception | error | oauth2, grant-type, client-registration, sa-token |
30126 无效 grant_type: | exception | error | oauth2, grant-type, extension, sa-token |
30141 应用未开放的 grant_type: | exception | error | oauth2, grant-type, client-registration, sa-token |
30105 无效 client_id: | exception | error | oauth2, client-id, registration, sa-token |
30115 无效 client_secret: | exception | error | oauth2, client-secret, credentials, sa-token |
30112 该 client 暂未签约 scope: | exception | error | oauth2, scope, client-registration, sa-token |
30113 无效 redirect_url: | exception | error | oauth2, redirect-uri, validation, url |
30114 非法 redirect_url: | exception | error | oauth2, redirect-uri, allow-list, configuration |
30110 无效 code: | exception | error | oauth2, authorization-code, token, validation |
30106 无效 access_token: | exception | error | oauth2, access-token, validation, token |
30108 该 access_token 不具备 scope: | exception | error | oauth2, scope, access-token, authorization |
30111 无效 refresh_token: | exception | error | oauth2, refresh-token, validation, token |
30107 无效 client_token: | exception | error | oauth2, client-token, validation, token |
30109 该 client_token 不具备 scope: | exception | error | oauth2, scope, client-token, authorization |
| 编码字符串长度无效 | validation | error | serialization, base64, configuration, validation |
| 无效字符: | validation | error | serialization, base64, alphabet, configuration |
| 非法Emoji: | validation | error | serialization, emoji, utf-8, encoding |
| 不支持的摘要算法:{digestAlgo},你可以自定义摘要算法函数实现 | exception | error | api-sign, digest, configuration, crypto |
CODE_12211 未找到签名配置,appid={appid} | exception | error | api-sign, multi-app, configuration, appid |
CODE_12203 timestamp 超出允许的范围:{timestamp} | exception | error | api-sign, timestamp, clock-drift, replay-protection |
| nonce 为空,无效 | exception | error | api-sign, nonce, replay-protection, validation |
| 此 nonce 已被使用过,不可重复使用:{nonce} | exception | error | api-sign, nonce, replay-protection, retry |
CODE_12202 无效签名:{sign} | exception | critical | api-sign, signature, secret-key, security |
CODE_30023 应用 [{client}] 推送地址无效:{_pushUrl} | exception | error | sso, push-url, configuration, url |
CODE_30022 消息类型不可为空 | exception | error | sa-token, sso, validation, message |
CODE_30024 缺少参数:{key} | exception | error | sa-token, sso, validation, protocol |
CODE_30021 未能找到消息处理器: {type} | exception | error | sa-token, sso, dispatch, version-mismatch |
CODE_30006 {result.getMsg()} | exception | error | sa-token, sso, logout, remote-call |
CODE_30005 {result.getMsg()} | exception | error | sa-token, sso, ticket, remote-call |
CODE_30014 未指定 redirect 参数,也未配置 homeRoute 路由,无法完成重定向操作 | exception | warning | sa-token, sso, config, redirect |
CODE_30004 无效 ticket : {ticket} | exception | error | sa-token, sso, ticket, expiry |
CODE_30011 该 ticket 不属于 client={client}, ticket 值: {ticket} | exception | error | sa-token, sso, ticket, client-mismatch, security |
| client 标识不可为空 | exception | error | sa-token, sso, config, client |
CODE_30013 未能获取应用信息,client={client} | exception | error | sa-token, sso, config, client, registration |
CODE_30001 无效redirect:{url} | exception | error | sa-token, sso, redirect, validation, security |
CODE_30002 非法redirect:{url} | exception | error | sa-token, sso, redirect, allowlist, security |
CODE_30015 无效的 allow-url 配置(*通配符只允许出现在最后一位):{url} | exception | error | sa-token, sso, config, security, wildcard |
CODE_30303 token 已超时,无法解析:{jwtToken} | exception | error | sa-token, jwt, expiry, stateless |
CODE_30302 jwt cannot delete token | exception | warning | sa-token, jwt, api-disabled, stateless |
CODE_30304 jwt cannot get token list | exception | warning | sa-token, jwt, api-disabled, stateless |
CODE_30301 请配置:jwtSecretKey | exception | error | sa-token, jwt, config, secret-key |
| can not connect to redis host {host}:{port} , cause : {e} | exception | critical | sa-token, jboot, redis, network, connection |
| Please config "jboot.redis.{cacheName}.host" in your jboot.p | exception | error | sa-token, jboot, redis, config |
| The forward action url is the same as before. | exception | error | |
| 当前 SpringBoot 版本(" + version + ")与 Sa-Token 依赖不兼容,请将依赖 sa-to | exception | error | |
| 当前 SpringBoot 版本(" + version + ")与 Sa-Token 依赖不兼容,请将依赖 sa-to | exception | error | |
| 非 web 上下文无法获取 HttpServletRequest | exception | error | |
| 非 web 上下文无法获取 HttpServletResponse | exception | error | |
| 非 web 上下文无法获取 HttpServletRequest | exception | error | |
| 路由匹配器初始化失败 | exception | error | |
| 路由匹配器调用失败 | exception | error |