我正在使用 express-jwt 创建中间件jwtCheckMiddleware
:
function getTokenFromRequest(req) {
...
throw Boom.badRequest("JWT missing")
}
async function isNotRevokedCallback(req, payload, done) {
...
}
const jwtCheckMiddleware = expressJwt({
secret: ....,
credentialsRequired: true,
isRevoked: isNotRevokedCallback,
getToken: getTokenFromRequest
})
在开发的某个阶段,发布的 JWT 缺少 JTI 属性。新发行的代币持有 JTI 财产。
缺少 JWT 的请求会很快被拒绝;getTokenFromRequest
引发错误。这很好用。
带有旧 JWT 的请求(缺少 JTI)只是超时。
isNotRevokedCallback
JTI内部有一个空检查;当 JTI 未定义时,我会抛出错误。会不会是expressJwt
中间件构造函数没有正确捕捉到这个错误,导致超时?
isNotRevokedCallback
大致基于https://github.com/auth0/express-jwt#revoked-tokens