node.js - 使用 MEAN 堆栈编辑/更新 API 端点的访问控制/授权

标签 node.js authentication authorization mean jwt

在此应用中,唯一有权编辑或销毁帖子的用户应该是创建帖子的用户。

我有一个对用户进行身份验证的路由,以便为他们提供 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/

相关文章:

python - 我如何使用python登录网站?

c# - 如何强制仅匿名访问 Controller 操作?

laravel - Flutter 中出现 401 未经授权的错误,但在 Postman 中工作正常

node.js - gulp批量调整大小

mysql - Node.js-mysql : Bad field Error

node.js - redis string 看起来像一个 hash,获取值

node.js - 错误 TS1259 : Module '"./node_modules/@types/express/index "' can only be default-imported using the ' esModuleInterop' 标志

Java 单点登录 : Kerberos authentication against Active Directory

c# - WCF 自定义授权

authorization - 我是否仍可以在不使用 OAuth 的情况下使用 YouTube v3 API 授权请求?