这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
会话管理
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。