oa-ai/src/app/api/auth/logout/route.ts""

31 lines
1.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// POST /api/auth/logout — 退出登录(清除 cookie + 302 跳转 /login
import { NextResponse } from 'next/server'
const autheliaUrl = process.env.AUTHELIA_URL || 'https://sso.tlyq.ai'
const cookieDomain = process.env.COOKIE_DOMAIN || '.tlyq.ai'
// GET: 浏览器导航 → 302 到 Authelia end_session带 rd 回跳 /login
export async function GET() {
const returnUrl = `${process.env.NEXT_PUBLIC_SITE_URL || 'http://localhost:6179'}/login`
const response = NextResponse.redirect(
`${autheliaUrl}/api/oidc/end_session?rd=${encodeURIComponent(returnUrl)}`
)
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
}
// POST: fetch 调用 → 清除 cookie + 返回 200 JSON
export async function POST() {
const response = NextResponse.json({ success: true })
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
}