Данные, защищенные узлом JWT - PullRequest
0 голосов
/ 26 июня 2018

В настоящее время я работаю над полным стековым веб-проектом MEAN для небольшого рыночного приложения. Сборка этого проекта в 3 части: - сервер -> node.js экспресс мангуста - передняя стенка -> угловая 4 - передний мобильный -> ионный

Мне нужно создать этот простой API REST с классическим CRUD, но я должен использовать 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 голосов
/ 26 июня 2018

@ Шахинмахмуд прав. По сути, есть две части того, что вы делаете. Аутентификация и авторизация. Аутентификация выполняется путем проверки токена JWT. Авторизация заключается в ограничении доступа в зависимости от пользователя. В вашем случае, если это просто доступ к одному ресурсу, подойдет простой if-else. В противном случае вам нужно заглянуть в некоторые библиотеки управления пользователями.

Это определение , вероятно, должно помочь

0 голосов
/ 26 июня 2018

jwt токен, когда приходит с запросом, если этот токен действителен, он просто передает запрос следующему с этими учетными данными пользователя, но если токен недействителен, он останавливает жизненный цикл запроса. Но это не имеет ничего общего с тем, что вы пытаетесь сделать. Вы можете написать простое условие в своем коде контроллера, например:

if(req.user.id !== youradd.user_id){
    return ('with valid message and http code')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...