Я не знаю, что такое метод jwt
- пользовательское промежуточное ПО или просто пакет jwt
?
Также я вижу, что вы возвращаете вызов jwt без передачи req, res, next
:
this.checkJwt = (req, res, next) => {
return jwt({
secret: jwksRsa.expressJwtSecret({
cache: true,
rateLimit: true,
jwksRequestsPerMinute: 5,
jwksUri: process.env.AUTH0_JWKS,
}),
// Validate the audience and the issuer.
audience: process.env.AUTH0_AUDIENCE,
issuer: process.env.AUTH0_ISSUER,
algorithms: ["RS256"],
});
};
результат выполнения во время вызова промежуточного программного обеспечения равен [Function](req, res, next)
, который, как ожидается, будет выполнен - не возвращен.
, поэтому, если это промежуточное программное обеспечение, попробуйте переписать его следующим образом:
const checkJwt = (req, res, next) => {
jwt({
secret: jwksRsa.expressJwtSecret({
cache: true,
rateLimit: true,
jwksRequestsPerMinute: 5,
jwksUri: process.env.AUTH0_JWKS,
}),
// Validate the audience and the issuer.
audience: process.env.AUTH0_AUDIENCE,
issuer: process.env.AUTH0_ISSUER,
algorithms: ["RS256"],
})(req, res, next);
};
app.get(routes.getUserInfo, checkJwt, this.userController.me)
Но если jwt
метод не является промежуточным программным обеспечением, и он возвращает true or false
в результате:
const checkJwt = (req, res, next) => {
const result = jwt({
secret: jwksRsa.expressJwtSecret({
cache: true,
rateLimit: true,
jwksRequestsPerMinute: 5,
jwksUri: process.env.AUTH0_JWKS,
}),
// Validate the audience and the issuer.
audience: process.env.AUTH0_AUDIENCE,
issuer: process.env.AUTH0_ISSUER,
algorithms: ["RS256"],
});
// if jwt returns something (:
if (!result) {
return res.status(401).send('Unauthorized');
}
next();
};
app.get(routes.getUserInfo, checkJwt, this.userController.me)