mirror of
https://github.com/ZeroCatDev/ClassworksKV.git
synced 2025-12-07 21:13:10 +00:00
feat: 增强错误处理,统一JWT过期返回格式,添加业务错误码支持
This commit is contained in:
parent
398f79d5c9
commit
4ec10acfcf
@ -14,14 +14,16 @@ const errorHandler = (err, req, res, next) => {
|
|||||||
console.error(err);
|
console.error(err);
|
||||||
}
|
}
|
||||||
// 提取错误信息
|
// 提取错误信息
|
||||||
const statusCode = err.statusCode || err.status || 500;
|
const statusCode = err.statusCode || err.status || 500;
|
||||||
const message = err.message || "服务器错误";
|
const message = err.message || "服务器错误";
|
||||||
const details = err.details || null;
|
const details = err.details || null;
|
||||||
|
const code = err.code || undefined;
|
||||||
|
|
||||||
// 返回统一格式的错误响应
|
// 返回统一格式的错误响应
|
||||||
return res.status(statusCode).json({
|
return res.status(statusCode).json({
|
||||||
success: false,
|
success: false,
|
||||||
message: message,
|
message: message,
|
||||||
|
code: code,
|
||||||
details: details,
|
details: details,
|
||||||
error:
|
error:
|
||||||
process.env.NODE_ENV === "production"
|
process.env.NODE_ENV === "production"
|
||||||
|
|||||||
@ -76,7 +76,10 @@ export const jwtAuth = async (req, res, next) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (newTokenError.name === 'TokenExpiredError' || legacyTokenError.name === 'TokenExpiredError') {
|
if (newTokenError.name === 'TokenExpiredError' || legacyTokenError.name === 'TokenExpiredError') {
|
||||||
return next(errors.createError(401, "JWT token已过期"));
|
// 统一的账户JWT过期返回
|
||||||
|
// message: JWT_EXPIRED(用于客户端稳定识别)
|
||||||
|
// code: AUTH_JWT_EXPIRED(业务错误码)
|
||||||
|
return next(errors.createError(401, "JWT_EXPIRED", null, "AUTH_JWT_EXPIRED"));
|
||||||
}
|
}
|
||||||
|
|
||||||
return next(errors.createError(401, "token验证失败"));
|
return next(errors.createError(401, "token验证失败"));
|
||||||
|
|||||||
@ -1,16 +1,18 @@
|
|||||||
/**
|
/**
|
||||||
* 创建标准错误对象
|
* 创建标准错误对象
|
||||||
* @param {number} statusCode - HTTP状态码
|
* @param {number} statusCode - HTTP状态码
|
||||||
* @param {string} [message] - 错误消息
|
* @param {string} [message] - 错误消息(推荐使用稳定的机器可读文本,如 JWT_EXPIRED)
|
||||||
* @param {object} [details] - 附加信息
|
* @param {object} [details] - 附加信息
|
||||||
|
* @param {string} [code] - 业务错误码(如 AUTH_JWT_EXPIRED)
|
||||||
* @returns {object} 标准错误对象
|
* @returns {object} 标准错误对象
|
||||||
*/
|
*/
|
||||||
const createError = (statusCode, message, details = null) => {
|
const createError = (statusCode, message, details = null, code = null) => {
|
||||||
// 直接返回错误对象,不抛出异常
|
// 直接返回错误对象,不抛出异常
|
||||||
const error = {
|
const error = {
|
||||||
statusCode: statusCode,
|
statusCode: statusCode,
|
||||||
message: message || '服务器错误',
|
message: message || '服务器错误',
|
||||||
details: details
|
details: details,
|
||||||
|
code: code || undefined,
|
||||||
};
|
};
|
||||||
return error;
|
return error;
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user