Express:如何使用 JSON 网络令牌保护多条路线
Express: How to protect multiple routes with JSON web token
我真的只是在寻找一种方法来清理我的代码。我有几条这样的路线,请注意每条路线都单独经过 JSON 网络令牌验证过程。
router.route('/some-route').post((req, res) => {
jwt.verify(req.body.token, secret, (err, decoded) => {
if (err) return console.log(err);
// do something
res.json({ some: 'response data' });
});
});
router.route('/some-other-route').post((req, res) => {
jwt.verify(req.body.token, secret, (err, decoded) => {
if (err) return console.log(err);
// do something else
res.json({ some: 'response data' });
});
});
还有别的办法吗?我的一些路由正在接近回调地狱级别的嵌套,所以最好从每条路由中消除它。
很确定您可以告诉路由器 use
作为中间件的功能。 router
.
中的每条路线都会调用该函数
router.use((req, res, next) => {
if(!req.body.token)
return res.json({ message: 'Missing token.' });
jwt.verify(req.body.token, secret, (err, decoded) => {
if (err) return res.json({ message: 'Failed to authenticate token.' });
// do something else
req.decoded = decoded
next();
});
});
我真的只是在寻找一种方法来清理我的代码。我有几条这样的路线,请注意每条路线都单独经过 JSON 网络令牌验证过程。
router.route('/some-route').post((req, res) => {
jwt.verify(req.body.token, secret, (err, decoded) => {
if (err) return console.log(err);
// do something
res.json({ some: 'response data' });
});
});
router.route('/some-other-route').post((req, res) => {
jwt.verify(req.body.token, secret, (err, decoded) => {
if (err) return console.log(err);
// do something else
res.json({ some: 'response data' });
});
});
还有别的办法吗?我的一些路由正在接近回调地狱级别的嵌套,所以最好从每条路由中消除它。
很确定您可以告诉路由器 use
作为中间件的功能。 router
.
router.use((req, res, next) => {
if(!req.body.token)
return res.json({ message: 'Missing token.' });
jwt.verify(req.body.token, secret, (err, decoded) => {
if (err) return res.json({ message: 'Failed to authenticate token.' });
// do something else
req.decoded = decoded
next();
});
});