@@ -1,4 +1,5 @@
|
||||
// server/api/auth/login.post.ts
|
||||
import { consola } from "consola";
|
||||
import type { IUserLoginData, IUserLoginRequest } from "#shared/types";
|
||||
import {
|
||||
clearNewApiAuthCookies,
|
||||
@@ -78,10 +79,10 @@ export default defineEventHandler(async (event) => {
|
||||
if (!session) {
|
||||
// 没有 session 就不能恢复 NewAPI 登录态,必须让前端明确感知失败。
|
||||
clearNewApiAuthCookies(event);
|
||||
return createErrorResponse(
|
||||
500,
|
||||
"登录成功但未收到 NewAPI session,请稍后重试"
|
||||
consola.error(
|
||||
"/api/auth/login 登录成功但未收到 NewAPI session,请稍后重试"
|
||||
);
|
||||
return createErrorResponse(500, "服务器错误,请稍后重试");
|
||||
}
|
||||
|
||||
setNewApiAuthCookies(
|
||||
@@ -97,6 +98,7 @@ export default defineEventHandler(async (event) => {
|
||||
);
|
||||
} catch (error) {
|
||||
clearNewApiAuthCookies(event);
|
||||
consola.error("/api/auth/login 登录失败", error);
|
||||
return createUpstreamErrorResponse(error, "登录失败");
|
||||
}
|
||||
});
|
||||
@@ -113,6 +115,7 @@ const normalizeLoginResponse = (
|
||||
}
|
||||
|
||||
if (!isRecord(response)) {
|
||||
consola.error("/api/auth/login 登录失败:响应不是对象");
|
||||
return {
|
||||
message: "登录失败",
|
||||
user: null
|
||||
@@ -124,6 +127,7 @@ const normalizeLoginResponse = (
|
||||
wrapped.message || (wrapped.success ? "登录成功" : "登录失败");
|
||||
|
||||
if (wrapped.success !== true || !isUser(wrapped.data)) {
|
||||
consola.error("/api/auth/login 登录失败:上游返回的数据格式不正确");
|
||||
return {
|
||||
message,
|
||||
user: null
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
import { consola } from "consola";
|
||||
|
||||
/**
|
||||
* 请求日志中间件:记录每次请求的 method、路径、状态码和耗时。
|
||||
* 不记录请求体和响应体,避免密码、token 等敏感信息泄漏。
|
||||
*/
|
||||
export default defineEventHandler((event) => {
|
||||
const start = Date.now();
|
||||
const method = event.node.req.method ?? "UNKNOWN";
|
||||
const path = getRequestURL(event).pathname;
|
||||
|
||||
// 响应发送完毕后记录结果
|
||||
event.node.res.on("finish", () => {
|
||||
const status = event.node.res.statusCode;
|
||||
const elapsed = Date.now() - start;
|
||||
const log = `[${method}] ${path} → ${status} (${elapsed}ms)`;
|
||||
|
||||
if (status >= 500) {
|
||||
consola.error(log);
|
||||
} else if (status >= 400) {
|
||||
consola.warn(log);
|
||||
} else {
|
||||
consola.info(log);
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user