【发布时间】:2018-04-19 07:08:42
【问题描述】:
我有一个没有任何安全性的 Node.js Express API,现在我正在寻找基于 JWT 的授权补丁。
我已经为一种方法工作(使用下面的代码)。有没有一种简单的方法可以将其应用于所有方法?例如,也许使用 app.all?还是我必须将代码添加到每个方法中?
app.get('/people/:id', ensureToken, (req, res, next) => {
var id = req.params.id;
getPerson(id, (err, people) => {
if (err) {
next(err);
return;
}
jwt.verify(req.token, process.env.JWT_KEY, function(err, data) {
if (err) {
res.sendStatus(403);
} else {
res
.status(200)
.set('Content-Type', 'application/json')
.set("Connection", "close")
.send(person);
}
});
});
});
function ensureToken(req, res, next) {
const bearerHeader = req.headers["authorization"];
if (typeof bearerHeader !== 'undefined') {
const bearer = bearerHeader.split(" ");
const bearerToken = bearer[1];
req.token = bearerToken;
next();
} else {
res.sendStatus(403);
}
}
【问题讨论】: