JWT节点保护的数据

时间:2018-06-26 07:57:26

标签: node.js express jwt mean-stack

我目前正在为一个小型市场应用程序进行MEAN全栈Web项目。该项目分为三个部分: -服务器-> node.js表达猫鼬 -前腹板->角钢4 -前置手机->离子

我必须使用经典的CRUD构建这个简单的API REST,但必须使用JWT来保护我的广告(针对市场)。 使用JWT验证,用户将只能删除或修改自己创建的广告。

当前,我拥有令牌验证的中间件,但是它不能阻止用户删除其他用户创建的广告。

我正在调用我在教程中了解的中间件,它可以更改。

经过大量研究,我只找到了有关使用JWT进行身份验证的信息,那么如果有人可以帮助我,谢谢。

//my token verification's middle-ware
function verifyToken(req, res, next) {
  var token = req.headers['x-access-token'];
  if (!token)
    return res.status(403).send({ auth: false, message: 'No token provided.' });
  jwt.verify(token, config.secret, function(err, decoded) {
    if (err)
    return res.status(500).send({ auth: false, message: 'Failed to authenticate token.' });
    // if everything good, save to request for use in other routes
    req.userId = decoded.id;
    next();
  });
}


//an example of middle-ware call
  router.delete('/:id',VerifyToken, (req, res) => {
    advertModel.findById(req.params.id, (err, advert) => {
      if(!advert){
        res.json({message:"No advert corresponding"})
      }
        advert.remove((err) => {
          if(err){
            console.log(err);
          }
             res.json({message: 'Successfully deleted'});
        });
    });
  });

该应用程序仍在构建中,如果您有任何注释可以使我改善所看到的几段代码,请继续。

2 个答案:

答案 0 :(得分:0)

jwt令牌随请求一起提供时,如果该令牌有效,则只需使用该用户凭据将请求传递给下一个,但是如果该令牌无效,则它将停止请求生命周期。但这与您要尝试执行的操作没有任何关系。 您可以像这样在控制器代码中编写一个简单的条件

if(req.user.id !== youradd.user_id){
    return ('with valid message and http code')

答案 1 :(得分:0)

@shahinmahmud是正确的。基本上,您要做的事情分为两部分。身份验证和授权。身份验证通过JWT令牌验证完成。授权是基于用户来限制访问。对于您而言,如果仅访问一种资源,那么简单的if-else就可以。否则,您需要研究一些用户管理库。

这个definition应该会帮助