From dbde9a6058febf97cddbd5e63a400d20a0200657 Mon Sep 17 00:00:00 2001 From: aiyimickey <39365912+aiyimickey@users.noreply.github.com> Date: Mon, 29 Jun 2026 20:05:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20logout=20=E7=AB=AF=E7=82=B9=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=20domain=20=E5=8F=82=E6=95=B0=E6=B8=85=E9=99=A4?= =?UTF-8?q?=E8=B7=A8=E5=9F=9F=20cookie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - logout 端点清除 cookie 时添加 domain 参数 - 修复 .tlyq.ai 域的 tlyq_session cookie 未正确清除的问题 - cookie 设置时 domain=.tlyq.ai,清除时也必须指定相同 domain --- src/app/api/auth/logout/route.ts | 9 +++++---- src/app/login/page.tsx | 12 ++++++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/app/api/auth/logout/route.ts b/src/app/api/auth/logout/route.ts index ed24ebe..8a73281 100644 --- a/src/app/api/auth/logout/route.ts +++ b/src/app/api/auth/logout/route.ts @@ -3,11 +3,12 @@ import { cookies } from 'next/headers' export async function POST() { const cookieStore = await cookies() + const domain = process.env.COOKIE_DOMAIN || '' - // 清除所有相关 cookie - cookieStore.set('tlyq_session', '', { maxAge: 0, path: '/' }) - cookieStore.set('session', '', { maxAge: 0, path: '/' }) - cookieStore.set('oidc_id_token', '', { maxAge: 0, path: '/' }) + // 清除所有相关 cookie(必须指定 domain 以清除跨域 cookie) + cookieStore.set('tlyq_session', '', { maxAge: 0, path: '/', domain }) + cookieStore.set('session', '', { maxAge: 0, path: '/', domain }) + cookieStore.set('oidc_id_token', '', { maxAge: 0, path: '/', domain }) // Authelia 4.38 不支持 end_session_endpoint,直接跳转登录页 // Authelia session 会在 cookie 过期后自动清除 diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index aa5cbb0..d3a1db0 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -1,9 +1,9 @@ 'use client' -import { useState } from 'react' +import { useState, Suspense } from 'react' import { useSearchParams } from 'next/navigation' -export default function LoginPage() { +function LoginPageContent() { const [username, setUsername] = useState('') const [password, setPassword] = useState('') const [error, setError] = useState('') @@ -86,3 +86,11 @@ export default function LoginPage() { ) } + +export default function LoginPage() { + return ( + 加载中...}> + + + ) +}