会话管理

Token 是凭证,会话是登录态。会话管理要回答:用户当前在哪些设备上登录、这些登录态什么时候过期、如何续期、如何撤销、出现风险时如何强制下线。

会话模型

一条会话记录通常包含:

字段含义
session_id会话唯一标识
user_id用户
device_id设备或客户端标识
created_at登录时间
last_seen_at最近活跃时间
expires_at过期时间
revoked_at撤销时间
risk_level当前风险等级

即使使用 JWT,也建议保留会话记录。它能支持设备管理、强制下线、风险审计和刷新令牌撤销。

续期策略

会话过期有两种常见策略:

  • 固定过期:登录后 7 天必须重新登录。
  • 滑动过期:用户持续活跃时自动延长。

滑动过期体验好,但风险窗口更大。常见做法是组合使用:短期 Access Token、较长 Refresh Token,再加一个最长会话生命周期。

撤销与强制下线

会话必须可撤销。触发场景包括:

  • 用户主动退出登录。
  • 修改密码后撤销其他设备会话。
  • 管理员冻结账号。
  • 风控检测到异常登录。
  • Refresh Token 被重放。

撤销时要更新会话状态,并让后续 Token 刷新失败。对于 JWT Access Token,可以通过短有效期降低撤销延迟,必要时维护短期黑名单。

多设备管理

用户应该能查看已登录设备,并退出某一台设备。后台也需要看到登录历史:IP、地域、设备、浏览器、登录方式和风险结果。

这不只是体验功能,也是安全能力。账号被盗时,用户需要能快速识别异常设备并撤销会话。

会话风控

会话不是登录后就永远可信。以下情况应提高风险等级:

  • IP 地域突然变化。
  • 设备指纹变化。
  • 长时间不活跃后执行高风险操作。
  • 同一 Refresh Token 被重复使用。

高风险会话不一定直接下线,可以要求 MFA 或重新输入密码。下一章我们会扩展到多个系统共享身份的 SSO。