Как заставить набор заголовков сохраняться в Express Node JS - PullRequest
0 голосов
/ 22 апреля 2019

JS-приложение моего узла включает в себя настройку Jason Web Token для заголовка ответа при входе в систему, чтобы я мог использовать этот JWT для проверки пользователя при доступе к запрещенным страницам.

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

    // Login Handle
router.post("/login", async (req, res, next) => {


  const user = await User.findOne({ email: req.body.email });
  if (!user) return res.status(400).send("Email or password is incorrect");

  const validPassword = await bcrypt.compare(req.body.password, user.password);
  if (!validPassword) return res.status(400).send("Invalid email or password.");

  const token = user.generateAuthToken();

  res.set('x-auth-token', token).redirect('/dashboard');

});

Вот мое промежуточное ПО аутентификации, которое я пытаюсь заставить работать:

function auth(req, res, next) {
    const token = req.header('x-auth-token');
    if(!token) return res.status(401).send("Access denied. No token provided");

    // if the token is valid it will return the decoded payload
    try {
        const decoded = jwt.verify(token, jwtPrivateKey);
        req.user = decoded;
        next();
    }
    catch(ex) {
        res.status(400).send("Invalid token.");
    }

Я вижу на вкладке сети на инструментах Chrome Dev, что заголовок правильно устанавливается с помощью JWT. Однако, как только страница обновляется или я посещаю другую страницу, заголовок исчезает.

Нужно ли использовать res.set('x-auth-token', token).render('foo') на каждом маршруте? Кажется, это не было бы отличным решением.

Может кто-нибудь сказать мне, что я делаю не так?

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