fix: 修复中间件对API POST请求的错误重定向,直接返回401而不是重定向到登录页面
This commit is contained in:
parent
bacac837bd
commit
5e402948a2
@ -90,6 +90,15 @@ export async function middleware(request: NextRequest) {
|
|||||||
|
|
||||||
// 未登录用户只能访问 /login 和 /register
|
// 未登录用户只能访问 /login 和 /register
|
||||||
if (!token && !["/login", "/register"].includes(pathname)) {
|
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);
|
const loginUrl = new URL("/login", externalBase);
|
||||||
// 保存当前路径作为回调 URL
|
// 保存当前路径作为回调 URL
|
||||||
loginUrl.searchParams.set("callbackUrl", pathname);
|
loginUrl.searchParams.set("callbackUrl", pathname);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user