fix: 修复中间件对API POST请求的错误重定向,直接返回401而不是重定向到登录页面

This commit is contained in:
Your Name 2025-12-29 01:34:30 +08:00
parent bacac837bd
commit 5e402948a2

View File

@ -90,6 +90,15 @@ export async function middleware(request: NextRequest) {
// 未登录用户只能访问 /login 和 /register
if (!token && !["/login", "/register"].includes(pathname)) {
// 对于 API 路由的非 GET 请求,直接返回 401 JSON 响应(不重定向)
if (pathname.startsWith("/api/") && request.method !== "GET") {
return NextResponse.json(
{ error: "未授权,请先登录" },
{ status: 401 }
);
}
// 对于页面路由(GET 请求),重定向到登录页面
const loginUrl = new URL("/login", externalBase);
// 保存当前路径作为回调 URL
loginUrl.searchParams.set("callbackUrl", pathname);