如何使设置标头保留在Express Node JS中

时间:2019-04-22 08:52:35

标签: node.js express http-headers jwt

我的节点JS应用程序涉及在登录时将Jason Web令牌设置为响应标头,以便在访问受限页面时可以使用此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')?看来这不是一个很好的解决方案。

谁能告诉我我做错了什么?

0 个答案:

没有答案