Как получить user.id из токена jwt в Node.js? - PullRequest
0 голосов
/ 22 декабря 2018

В моем контроллере пользователя я создаю токен, в котором я сохраняю идентификатор этого пользователя при входе в мое приложение.

exports.findOne = (req, res) => {
  User.findOne({
    where: {
      login: req.body.login,
    },
  })
    .then(user => {
      if (user) {
        if (bcrypt.compareSync(req.body.password, user.password)) {
          const token = jwt.sign(
            {
              id: user.id, // this is the id I need.
            },
            env.SECRET_KEY,
            {
              expiresIn: 129600,
            },
          );
          return res.status(200).json({
            message: 'Auth successful',
            token,
          });
        }
       ...
      }
    })
    .catch(err => {
      res.status(400).json({ error: err });
    });
};

Теперь в другом контроллере я хотел бы прочитать этот идентификатор и использовать его длямоя цель.Как я могу добраться до него?

       const loginId = '?'; // here I want to give it to id
            Bill.update(
              {
                available_funds: available_funds - amountMoney,
              },
              { where: { id_owner: loginId } },
            ).then(() => {
              res.status(200).send(`ok`);
            });

1 Ответ

0 голосов
/ 22 декабря 2018

Создайте промежуточное ПО, которое проверяет входящий токен перед отправкой на ваш маршрут обновления.Это промежуточное ПО должно отвечать за проверку входящего токена, который вы передаете из кода на стороне клиента после входа в систему (обычно практикуется сохранение токена в файлах cookie).

Теперь в вашем промежуточном ПО вы можете сделать что-то похожее на это:

app.use(function(req,res,next) {
 JWT.verify(req.cookies['token'], 'YOUR_SECRET', function(err, decodedToken) {
   if(err) { /* handle token err */ }
   else {
    req.userId = decodedToken.id;   // Add to req object
    next();
   }
 });
});

Затем, наконец, в вашем новом контроллере вы можете получить доступ к идентификатору из объекта запроса:

   const loginId = req.userId;

    Bill.update(
      {
        available_funds: available_funds - amountMoney,
      },
      { where: { id_owner: loginId } },
    ).then(() => {
      res.status(200).send(`ok`);
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...