gpt4 book ai didi

node.js - 如何忽略 Jsonwebtoken 中的某些请求类型

转载 作者:太空宇宙 更新时间:2023-11-03 22:31:47 32 4
gpt4 key购买 nike

我想忽略一些针对 token 身份验证进行检查的 API URL

我想保护 post 和 put 方法,但不想保护这个 url

本地主机:3000/api/events/

router.use(function(request, response) {
var token = request.body.token || request.query.token || request.headers['x-access-token'];
if (token) {
jwt.verify(token, app.get(superSecret), function(err, decoded) {
if (err)
return response.json({
sucess: false,
message: "Failed token Authentication"
});
else {
request.decoded = decoded;
next();
}

});
} else {
return response.status(403).send({
success: false,
message: 'No token provided.'
});

}

});

如何在 Node,express 中使用 jsonwebtoken 来做到这一点

我希望这仅适用于 post、put、delete 请求,但不适用于 get 请求。

最佳答案

您可以将匿名中间件移至正常声明的函数,然后将其传递给所有 protected 路由(您决定要保护哪个路由!)

您的代码可能如下所示:

function tokenProtection(request, response, next) {
var token = request.body.token || request.query.token || request.headers['x-access-token'];
if (token) {
jwt.verify(token, app.get(superSecret), function(err, decoded) {
if (err)
return response.json({
sucess: false,
message: "Failed token Authentication"
});
else {
request.decoded = decoded;
next();
}

});
} else {
return response.status(403).send({
success: false,
message: 'No token provided.'
});

}

}

现在您的路线可能如下所示(您决定要保护什么):

router.get('/item', function(req, res) { ... }); // not protected
router.get('/item/:id', function(req, res) { ... }); // not protected
router.post(tokenProtection,'/item', function(req, res) { ... });//protected
router.put(tokenProtection,'/item', function(req, res) { ... });//protected

router.get('/book', function(req, res) { ... });// not protected
router.get('/book/:id', function(req, res) { ... });// not protected
router.post(tokenProtection,'/book', function(req, res) { ... });//protected
router.put(tokenProtection,'/book', function(req, res) { ... });//protected

关于node.js - 如何忽略 Jsonwebtoken 中的某些请求类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35890340/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com