【发布时间】:2022-08-21 00:29:56
【问题描述】:
我是 nodejs、expressjs 的新手,并尝试通过创建中间件来使用 express-jwt 包对路由进行身份验证。 GET 路由一切正常,但是当我访问 POST 路由并尝试撤销令牌时,它返回 500 内部服务器错误而没有任何消息。 我很困惑,这背后的主要原因是什么。所以如果可能的话,请帮助我。 我的代码如下。
const { expressjwt: expressJwt } = require(\'express-jwt\');
function authJwt() {
const secret = process.env.secret;
const api = process.env.API_URL;
return expressJwt({
secret,
algorithms: [\'HS256\'],
isRevoked: isRevoked
}).unless({
path: [
{url: /\\/api\\/v1\\/products(.*)/ , methods: [\'GET\', \'OPTIONS\'] },
{url: /\\/api\\/v1\\/categories(.*)/ , methods: [\'GET\', \'OPTIONS\'] },
`${api}/users/login`,
`${api}/users/register`,
]
})
}
async function isRevoked(req,payload,done) {
if(!payload.isAdmin) {
return done(null, true);
}
done();
}
module.exports = authJwt
-
你能分享导致 500 响应的请求吗?
-
这是本地主机上的 POST 请求 \"localhost:3000/api/v1/products\"
-
GET请求可能工作正常,因为它们不受任何身份验证的保护......例如,您可以在isRevoked方法中添加一些异常处理。 -
@MohdHasan 我认为我们正在遵循相同的教程,您找到解决问题的方法了吗?如果是这样,请分享以帮助他人
标签: node.js express jwt access-token express-jwt