22 lines
1.0 KiB
TypeScript
22 lines
1.0 KiB
TypeScript
// GET + POST /api/auth/logout — 退出登录(清除 cookie + 302 跳转 /login)
|
||
import { NextResponse, type NextRequest } from 'next/server'
|
||
|
||
const cookieDomain = process.env.COOKIE_DOMAIN || '.tlyq.ai'
|
||
|
||
/** 清除 tlyq_session + session cookie → 302 跳转 /login */
|
||
function logoutResponse(request: NextRequest): NextResponse {
|
||
const host = request.headers.get('x-forwarded-host') || request.headers.get('host') || 'localhost'
|
||
const proto = request.headers.get('x-forwarded-proto') || 'https'
|
||
const baseUrl = `${proto}://${host}`
|
||
const response = NextResponse.redirect(new URL('/login', baseUrl))
|
||
response.cookies.set('tlyq_session', '', {
|
||
httpOnly: true, secure: process.env.NODE_ENV === 'production',
|
||
sameSite: 'lax', domain: cookieDomain, path: '/', maxAge: 0,
|
||
})
|
||
response.cookies.set('session', '', { path: '/', maxAge: 0 })
|
||
return response
|
||
}
|
||
|
||
export async function GET(request: NextRequest) { return logoutResponse(request) }
|
||
export async function POST(request: NextRequest) { return logoutResponse(request) }
|