在此应用中,唯一有权编辑或销毁帖子的用户应该是创建帖子的用户。
我有一个对用户进行身份验证的路由,以便为他们提供 token 。我还有一个验证 token 的路线:
apiRouter.use(function(req, res, next) {
var token = req.body.token || req.query.token || req.headers['x-access-token'];
if (token) {
jwt.verify(token, secret, function(err, decoded) {
if (err) {
res.status(403).send({
success: false,
message: 'Failed to authenticate token.'
});
} else {
req.decoded = decoded;
next();
}
});
} else {
res.status(403).send({
success: false,
message: 'No token provided.'
});
}
});
确保只有适当的用户才能使用 token 编辑和销毁帖子的标准方法是什么?
apiRouter.route('/posts/:post_id')
.put(function(req, res) {
Post.findById(req.params.post_id, function(err, post) {
if (err) res.send(err);
if (req.body.title) post.title = req.body.title;
if (req.body.body) post.body = req.body.body;
if (req.body.author) post.author = req.body.author;
post.save(function(err) {
if (err) res.send(err);
// return a message
res.json({ message: 'Post updated!' });
});
});
})
.delete [...]
最佳答案
您可以将检查用户是否是经过验证的用户的所有逻辑放在中间件中,并可能使用 rbac(基于角色的访问控制),定义用户的权限/角色。
关于node.js - 使用 MEAN 堆栈编辑/更新 API 端点的访问控制/授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34497818/