使用express-jwt,我可以返回401以外的其他状态代码吗?

时间:2018-05-09 18:33:59

标签: node.js express jwt express-jwt

我正在使用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的状态代码。

1 个答案:

答案 0 :(得分:0)

express-jwt会抛出UnauthorizedError错误。它根本没有设置状态。

您在处理异常的地方定义了错误中间件。