Как мы можем хранить токен JWT в файлах cookie только Http? - PullRequest
0 голосов
/ 07 мая 2020

Я создаю модуль входа.

  1. Пользователь вводит имя пользователя и пароль.

  2. Если проверка пользователя прошла успешно, сервер вернет токен JWT .

  3. Я буду использовать токен JWT для проверки различных вызовов API в React js.

Теперь меня беспокоит то, что я нашел в какой-то статье об этом я обнаружил, что мы можем использовать http only cook ie. Как мы можем реализовать метод httponly cook ie для хранения JWT? Это безопасно?

1 Ответ

0 голосов
/ 07 мая 2020

Файлы cookie HttpOnly безопасны, поскольку они защищены от доступа браузера через API Document.cook ie и, следовательно, защищены от таких вещей, как XSS-атаки.

После успешной проверки вашего пользователя сервер должен сгенерировать токен jwt и вернуть его как cook ie вашему клиенту следующим образом:

return res.cookie('token', token, {
    expires: new Date(Date.now() + expiration), // time until expiration
    secure: false, // set to true if your using https
    httpOnly: true,
  });

Cook ie будет доступен через входящие HTTP-запросы от вашего клиента. Вы можете проверить значение jwt для cook ie с помощью функции авторизации промежуточного программного обеспечения для защиты конечных точек API:

const verifyToken = async (req, res, next) => {
  const token = req.cookies.token || '';
  try {
    if (!token) {
      return res.status(401).json('You need to Login')
    }
    const decrypt = await jwt.verify(token, process.env.JWT_SECRET);
    req.user = {
      id: decrypt.id,
      firstname: decrypt.firstname,
    };
    next();
  } catch (err) {
    return res.status(500).json(err.toString());
  }
};

Дополнительные сведения см. По ссылке: https://dev.to/mr_cea/remaining-stateless-jwt-cookies-in-node-js-3lle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...