feat: 安全设置展示有效登录会话,支持剔除其它设备

按设备指纹去重并直出 IP;非当前会话可踢下线,对方需重新输入密码。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-18 01:48:52 +08:00
parent 2ccfb5f330
commit 3a7bfe59df
16 changed files with 808 additions and 28 deletions

View File

@@ -26,6 +26,19 @@ export function authCookieHeader(store: CookieReader): string {
return token ? `${TOKEN_COOKIE}=${token.value}` : "";
}
/**
* 登录设备列表 SSR:必须同时转发 refresh cookie,才能识别「当前会话」并校准 IP/UA。
* 其它 SSR 接口不要用这个,避免把 refresh token 带到无关后端请求。
*/
export function sessionCookieHeader(store: CookieReader): string {
const parts: string[] = [];
const token = store.get(TOKEN_COOKIE);
if (token) parts.push(`${TOKEN_COOKIE}=${token.value}`);
const refresh = store.get(REFRESH_COOKIE);
if (refresh) parts.push(`${REFRESH_COOKIE}=${refresh.value}`);
return parts.join("; ");
}
/**
* 帖子详情 SSR:access token + 密码隐藏块解锁 cookie。
* 解锁 cookie 为 HttpOnly,必须随 SSR 转发,否则 refresh 后密码块会再次锁上。