session单模式登录+鉴权流程流程一览
登录鉴权逻辑生命周期
1. 登录流程(Login Phase)
2. 请求鉴权流程(Request Authorization Phase)
3. Session 存储层(Storage Layer)
4. Cookie 设置细节
5. 权限检查机制
6. 完整时间线
7. ThreadLocal 生命周期
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 模式实现详解
💬 评论