export async function proxy(...args: any[]) {
const request: NextRequest = args[0]
const { pathname } = request.nextUrl
try {
// 读取 Cookie 中的 Token
const token = request.cookies.get('auth_token')?.value
if (!token) {
throw new Error('未找到 auth_token cookie,请重新登录')
}
// 验证 token(每一步失败都会抛出具体异常信息)
await verifyTokenDebug(token)
} catch (e) {
const errorMessage = e instanceof Error ? e.message : String(e)
// API 请求返回 401 JSON
if (isApiRequest(pathname)) {
return NextResponse.json(
{ error: '未登录或会话已过期', errorMessage, args: JSON.stringify(args) },
{ status: 401 },
)
}
// 页面请求重定向至登录页
const loginUrl = new URL('/login', request.url)
// 保留原始路径作为重定向参数,登录后可跳回
loginUrl.searchParams.set('redirect', pathname)
return NextResponse.redirect(loginUrl)
}
return NextResponse.next()
}读取到的 json 如下,没有 env:
[
{
"__edgeone_nextInternal": {
"cookies": {
"_parsed": {},
"_headers": {}
},
"nextUrl": "https://bill-assistant-dp2dpo4ooj6r.edgeone.cool/api/rules",
"url": "https://bill-assistant-dp2dpo4ooj6r.edgeone.cool/api/rules"
},
"nextUrl": "https://bill-assistant-dp2dpo4ooj6r.edgeone.cool/api/rules",
"cookies": {
"_parsed": {},
"_headers": {}
},
"sourcePage": "/proxy"
},
{
"sourcePage": "/proxy"
}
]
相似问题