在 Hapi-auth-jwt2 中获取令牌过期错误 500 而不是 401
Getting error 500 instead of 401 on token expire in Hapi-auth-jwt2
我正在使用 Hapi-auth-jwt2,在我的 JWT 过期后遇到问题,我没有收到 401 错误,而是收到 500 服务器错误,
这是我的代码:
const prepare = async () => {
if(prepared){
return;
}
await server.register(documentor as any);
server.auth.strategy('token','jwt',{
key:JWT_TOKEN,
validate: AuthService.verify,
verifyOptions:{
algorithms:['HS256']
}
});
server.auth.default('token');
server.validator(Joi);
server.route(routes);
prepared = true;}
如果令牌有效,它工作正常,但如果令牌无效,它假设为 return 401,但如果我在 [=13= 中使用 ignoreExpiration: true
,我得到 500 ] 它又开始工作了。
这与 #328 有关,因为我使用的是 v10.2.0,它应该是固定的,但在我的情况下仍然不起作用。
此外,如果令牌无效或令牌过期,则不会调用 validate: AuthService.verify
。
我不知道它有什么问题。请帮忙。
如果有帮助,这里是调试错误消息
Debug: auth, unauthenticated, error, token
Error: Expired token
at Object.raiseError (/Users/tinkeshwar/Sites/proj/tool/node_modules/hapi-auth-jwt2/lib/index.js:302:45)
at Object.internals.authenticate (/Users/tinkeshwar/Sites/proj/tool/node_modules/hapi-auth-jwt2/lib/index.js:171:26)
at processTicksAndRejections (internal/process/task_queues.js:95:5)
at Object.authenticate (/Users/tinkeshwar/Sites/proj/tool/node_modules/hapi-auth-jwt2/lib/index.js:353:22)
at exports.Manager.execute (/Users/tinkeshwar/Sites/proj/tool/node_modules/@hapi/hapi/lib/toolkit.js:60:28)
at module.exports.internals.Auth._authenticate (/Users/tinkeshwar/Sites/proj/tool/node_modules/@hapi/hapi/lib/auth.js:258:30)
at Request._lifecycle (/Users/tinkeshwar/Sites/proj/tool/node_modules/@hapi/hapi/lib/request.js:372:32)
at Request._execute (/Users/tinkeshwar/Sites/proj/tool/node_modules/@hapi/hapi/lib/request.js:280:9)
调试:内部,错误
验证错误:不允许“属性”
statusCode: Joi.any().optional().example(401),
error: Joi.any().example("Unauthorized"),
message: Joi.any().example("Missing authentication"),
attributes: {error: "Expired token"}
}).label("Unauthorized Error");
您可能应该比较您的模式以了解未经授权的响应。
我正在使用 Hapi-auth-jwt2,在我的 JWT 过期后遇到问题,我没有收到 401 错误,而是收到 500 服务器错误,
这是我的代码:
const prepare = async () => {
if(prepared){
return;
}
await server.register(documentor as any);
server.auth.strategy('token','jwt',{
key:JWT_TOKEN,
validate: AuthService.verify,
verifyOptions:{
algorithms:['HS256']
}
});
server.auth.default('token');
server.validator(Joi);
server.route(routes);
prepared = true;}
如果令牌有效,它工作正常,但如果令牌无效,它假设为 return 401,但如果我在 [=13= 中使用 ignoreExpiration: true
,我得到 500 ] 它又开始工作了。
这与 #328 有关,因为我使用的是 v10.2.0,它应该是固定的,但在我的情况下仍然不起作用。
此外,如果令牌无效或令牌过期,则不会调用 validate: AuthService.verify
。
我不知道它有什么问题。请帮忙。
如果有帮助,这里是调试错误消息
Debug: auth, unauthenticated, error, token
Error: Expired token
at Object.raiseError (/Users/tinkeshwar/Sites/proj/tool/node_modules/hapi-auth-jwt2/lib/index.js:302:45)
at Object.internals.authenticate (/Users/tinkeshwar/Sites/proj/tool/node_modules/hapi-auth-jwt2/lib/index.js:171:26)
at processTicksAndRejections (internal/process/task_queues.js:95:5)
at Object.authenticate (/Users/tinkeshwar/Sites/proj/tool/node_modules/hapi-auth-jwt2/lib/index.js:353:22)
at exports.Manager.execute (/Users/tinkeshwar/Sites/proj/tool/node_modules/@hapi/hapi/lib/toolkit.js:60:28)
at module.exports.internals.Auth._authenticate (/Users/tinkeshwar/Sites/proj/tool/node_modules/@hapi/hapi/lib/auth.js:258:30)
at Request._lifecycle (/Users/tinkeshwar/Sites/proj/tool/node_modules/@hapi/hapi/lib/request.js:372:32)
at Request._execute (/Users/tinkeshwar/Sites/proj/tool/node_modules/@hapi/hapi/lib/request.js:280:9)
调试:内部,错误 验证错误:不允许“属性”
statusCode: Joi.any().optional().example(401),
error: Joi.any().example("Unauthorized"),
message: Joi.any().example("Missing authentication"),
attributes: {error: "Expired token"}
}).label("Unauthorized Error");
您可能应该比较您的模式以了解未经授权的响应。