我正在使用express-jwt。我想在失败时发回不同的状态代码。我实际上有两个不同的express-jwt中间件设置,一个需要凭证,另一个可选地解码令牌,如果它在那里。对于后者,如果令牌存在但是过期,我想返回不同的状态代码,因为在401上,我的应用程序自动将用户重定向到登录页面,我不希望在可选的身份验证上发生这种情况。
这是我的express-jwt设置:
const jwt = require('express-jwt');
exports.decodeAuthIfExist = jwt({
secret: jwksRsa.expressJwtSecret({
cache: true,
rateLimit: true,
jwksRequestsPerMinute: 5,
jwksUri: `https://${process.env.AUTH0_DOMAIN}/.well-known/jwks.json`
}),
credentialsRequired: false,
audience: process.env.AUTH0_AUDIENCE,
issuer: `https://${process.env.AUTH0_DOMAIN}/`,
algorithms: ['RS256']
});
这就是我使用它的方式:
app.get('/resource',
auth.decodeAuthIfExist,
resource.get);
例如,我需要修改以返回402的状态代码。
答案 0 :(得分:0)
express-jwt
会抛出UnauthorizedError
错误。它根本没有设置状态。
您在处理异常的地方定义了错误中间件。