缓存(Cache)说明
本文档列出系统所有存于内存缓存(如 Redis)的数据。这些数据不落数据库,丢失后可自行重建或自然过期。缓存键统一使用冒号分隔的前缀命名。
主站会话(session)
| 键 |
值 |
TTL |
说明 |
session:{sid} |
{ userId, 过期时间, ... } |
跟随 Cookie Max-Age(如 86400s) |
主站登录会话。sid 通过 Set-Cookie 下发,会话对象存缓存 |
会话失效包含:显式登出、改密码清除全部会话、封禁/角色变更清会话等。不落库。
后台会话(JWT)
| 键 |
内容 |
TTL |
说明 |
console_session:{jti} |
{ adminUserId, role, 过期时间 } |
如 3600s |
后台登录会话。jti 为 JWT 唯一标识,会话对象存缓存 |
后台 JWT:登录时签发,签名为后台密钥,jti 在缓存登记。请求经 Authorization: Bearer {JWT} 携带,后端解析 JWT 并由缓存校验 jti 有效(未登出/未过期)。
Yggdrasil 令牌
| 键 |
内容 |
TTL |
说明 |
ygg_token:{accessToken} |
{ clientToken, authRecordId, profileId, 颁发时间, 过期时间, invalidUntil? } |
令牌过期(如 15 天) |
accessToken 关联的令牌对象。状态由缓存派生 |
邮箱验证码
| 键 |
内容 |
TTL |
说明 |
email_code:{email}:{purpose} |
{ code, 尝试次数 } |
如 300s |
邮箱验证码。purpose 区分注册/登录/改密/改邮箱 |
OIDC 流程
| 键 |
内容 |
TTL |
说明 |
oidc_state:{state} |
{ codeVerifier, action, redirectUri, ... } |
如 600s |
OIDC 授权流程上下文,state 防 CSRF |
oidc_nonce:{nonce} |
{ 已使用 } |
一次性 |
可选,防重放 |
人机验证
| 键 |
内容 |
TTL |
说明 |
captcha:{token} |
{ 已使用 } |
token TTL(Turnstile 300s) |
记录一次性人机验证 token,防止重放 |
限流计数
| 键 |
内容 |
TTL |
说明 |
ratelimit:{维度}:{标识} |
请求计数 |
按限速窗口 |
限流计数,维度如 ip、userId、email、ip+email 等 |
login_attempts:{userId} |
登录失败次数 |
锁定期(如 15 分钟) |
账号级登录失败计数,用于 LoginLocked;登录成功后或解锁时清零。阈值与其配套配置见 速率限制。 |
其他
如有临时生成的随机数、一次性凭据等,可复用 cache: 通用前缀;超期自动清除。