Skip to content

认证与 Token ​

YeahBoot 使用 JWT 表达登录身份,同时在 Redis 保存服务端 Token 状态。JWT 负责签名和有效期,Redis 负责主动撤销、强制下线与在线策略。

管理后台登录 ​

text
获取验证码状态
  → 提交用户名、密码、验证码、终端
  → IP 维度接口限流
  → 用户名 + 终端失败次数检查
  → 密码校验
  → 用户状态校验
  → 签发 JWT 并写入 Redis

只有用户状态为启用才能登录。角色或资源为空不会阻止登录:后端会如实返回当前身份,前端仍允许进入首页、个人中心并正常退出。

登录连续失败达到阈值后,会按“用户名 + 终端”临时锁定。管理员可以在用户列表使用“解除登录限制”,终端默认为 Web。

App 登录 ​

App 端以手机号定位用户,支持密码或短信验证码二选一:

  • 用户存在:验证短信验证码或密码。
  • 用户不存在:短信验证码验证通过后自动创建 App 用户。
  • 短信验证码成功消费后立即从缓存删除。

手机号和账号承担唯一身份作用,生产环境应同时为短信发送增加频率、设备和业务风控。

受保护请求 ​

text
Authorization: Bearer <token>
          │
          ├── JWT 签名、主体、终端、有效期
          ├── Redis 服务端 Token
          ├── 当前用户状态
          ├── 当前启用角色
          └── 当前启用资源

仅 JWT 有效而 Redis Token 已删除时,请求仍返回认证失败。因此以下操作可以立即生效:

  • 用户主动退出。
  • 管理员禁用或删除用户。
  • 服务端按主体或终端清理 Token。

权限实时性 ​

角色和资源在请求鉴权时读取最新有效关系。修改角色权限、禁用角色或禁用资源后,无需批量踢出全部用户,后续请求会按最新数据判断。

用户状态不同:禁用用户会清理其 Token,使已有会话立即失效。系统还阻止用户禁用自己,并在配置了超级管理员时阻止禁用或删除超级管理员。

前端失效处理 ​

管理后台对 HTTP 401 和业务码 401 使用统一处理:

  1. 只执行一次失效流程,避免并发请求重复提示。
  2. 清除本地 Token、用户、权限和页签状态。
  3. 跳转登录页。
  4. 保留友好提示。

HTTP 403 表示已认证但没有当前接口权限,不应当清除登录状态。

安全模式与超级管理员 ​

  • safe-mode = true:跳过权限校验,适合初始化或明确受控的本地环境。
  • super-admin = <username>:仅配置账号与当前登录账号完全一致时跳过权限校验。
  • 两种情况都会向前端提供通配权限 *:*:*,前后端都识别该值。

DANGER

公开 Demo 和生产环境必须关闭安全模式。超级管理员使用复杂密码且不向体验用户公开。

当前边界 ​

当前使用单 Token 模型,尚未实现 Access Token + Refresh Token。需要长会话无感续期时,应统一设计刷新、撤销、并发请求重试和多终端策略,不建议只在前端延长本地保存时间。

YeahBoot 官方技术文档