【问题标题】:JWT node protected dataJWT 节点保护数据
【发布时间】:2018-12-04 20:55:07
【问题描述】:

我目前正在为一个小型市场应用程序开发一个 MEAN 全栈 Web 项目。该项目的构建分为 3 个部分: - 服务器 -> 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'});
        });
    });
  });

这个应用程序还在建设中,如果你有任何 cmets 可以让我改进你看到的几段代码,去吧。

【问题讨论】:

    标签: node.js express jwt mean-stack


    【解决方案1】:

    jwt 令牌在请求附带时,如果该令牌有效,它只需使用该用户凭据将请求传递给下一个,但如果令牌无效,它会停止请求生命周期。但这与您尝试做的事情没有任何关系。 您可以像这样在控制器代码中编写一个简单的条件

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

    【讨论】:

    • 具体在advert.remove()之前可以写上面的代码
    【解决方案2】:

    @shahinmahmud 是对的。基本上,您正在做的事情有两个部分。身份验证和授权。身份验证通过 JWT 令牌验证完成。授权是基于用户来限制访问。在你的情况下,如果它只是访问一个资源,一个简单的if-else 就可以了。否则你需要查看一些用户管理库。

    这个definition 应该会有所帮助

    【讨论】:

    • 好的,感谢您的帮助,我理解得更好了,我必须使用 jwt 从令牌中恢复 userId,并使用此 userId 进行授权。
    猜你喜欢
    • 2018-12-26
    • 1970-01-01
    • 2018-04-29
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 2017-02-05
    相关资源
    最近更新 更多