使用 express-jwt,我可以返回 401 以外的其他状态码吗?
Posted
技术标签:
【中文标题】使用 express-jwt,我可以返回 401 以外的其他状态码吗?【英文标题】:With express-jwt, can I return a different status code other than 401? 【发布时间】:2018-10-19 23:05:42 【问题描述】:我正在使用 express-jwt。我想在失败时发回不同的状态码。我实际上设置了 2 个不同的 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】:express-jwt
将引发 UnauthorizedError
错误。它根本不设置状态。
您在某处定义了错误中间件来处理异常。
【讨论】:
不能,它是express-jwt
源代码本身的一部分。见来源:github.com/auth0/express-jwt/blob/master/lib/index.js以上是关于使用 express-jwt,我可以返回 401 以外的其他状态码吗?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 OAuth2 身份验证服务器使用 jdbc 数据源返回 401 错误?