session单模式登录+鉴权流程流程一览

登录鉴权逻辑生命周期

1. 登录流程(Login Phase)

登录流程-68a07bac

2. 请求鉴权流程(Request Authorization Phase)

请求鉴权流程-3c3fed9c

3. Session 存储层(Storage Layer)

Session_存储层-3b233c95

4. Cookie 设置细节

Cookie_设置细节-5bc1bafd

5. 权限检查机制

权限检查机制-e6ee7b79

6. 完整时间线

完整时间线-63668021

7. ThreadLocal 生命周期

ThreadLocal 生命周期-c4cf33db

8. 关键配置项

app:
  session:
    store-type: redis  # memory | redis
    timeout-minutes: 30  # Session超时时间,单位:分钟
    sliding-window: true  # 是否启用滑动窗口
    cleanup-interval-ms: 300000  # 每5分钟清理一次过期Session
    cookie-name: SESSIONID  # Cookie名称
    cookie-path: /  # Cookie路径
    cookie-domain: null  # 跨域时设置
    http-only: true  # 是否设置 HttpOnly
    secure: true  # 生产环境必须设置为true
    same-site: Strict  # Strict | Lax | None
    redis-key-prefix: "session:"  # Redis键的前缀

  login-retry:
    max-attempts: 5  # 最大登录重试次数
    lock-duration-minutes: 30  # 锁定时长,单位:分钟

9. 异常处理

异常类型              | 错误码              | HTTP 状态 | 描述
─────────────────────|─────────────────────|──────────|──────────────
NOT_LOGIN_ERROR      | 401                 | 401      | 未登录
USER_NOT_FOUND       | 404                 | 404      | 用户不存在
USER_PASSWORD_ERROR  | 400                 | 400      | 密码错误
USER_ACCOUNT_LOCKED  | 429                 | 429      | 账号被锁定
FORBIDDEN            | 403                 | 403      | 权限不足
NO_AUTH_ERROR        | 403                 | 403      | 角色不足

10. 安全最佳实践

✓ 已实现:
  ├─ HttpOnly Cookie: 防止 XSS 攻击
  ├─ SameSite Cookie: 防止 CSRF 攻击
  ├─ HTTPS 传输: Secure 标志
  ├─ 动态盐密码: 存储密码不明文
  ├─ 登录重试限制: 防暴力破解
  ├─ 滑动窗口: 自动延期 Session
  ├─ ThreadLocal 清理: 防止信息泄露
  ├─ 单点登录: 同账号只能一个 Session
 ⚠ 建议补充:
  ├─ 密码加密算法升级 (bcrypt/argon2)
  ├─ Session 审计日志
  ├─ IP 地址检查
  ├─ 设备指纹识别
  ├─ 异常登录告警
  └─ 定期强制更新密码

项目分区导航:⬅️ 02-登录态 | 03-session单模式登录+鉴权流程流程一览 | ➡️ 04-Session + Cookie + Redis 模式实现详解