1
This commit is contained in:
@@ -362,6 +362,11 @@ async def login(db: AsyncSession, redis: aioredis.Redis, req, ip: str) -> dict:
|
||||
user.last_login_ip = ip
|
||||
await db.commit()
|
||||
|
||||
# 单点登录:新设备登录即踢掉其它设备。
|
||||
# 递增令牌纪元使旧 access token 立即失效(deps 每次请求校验 ep),
|
||||
# 清空 refresh 白名单使旧 refresh 无法刷新;随后签发的新 Token 带新纪元。
|
||||
await redis.incr(f"auth:epoch:{user.id}")
|
||||
await redis.delete(f"auth:refresh:{user.id}")
|
||||
tokens = await _issue_tokens(redis, user.id)
|
||||
return {"user_id": user.id, **tokens, "user": await _user_brief(db, user)}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user