NodeJS express cookie在前端部分不起作用

wmtdaxz3  于 2023-06-05  发布在  Node.js
关注(0)|答案(1)|浏览(182)

我正在用next.js框架做一个mern stack项目。我持有带有cookie的jwt令牌,并直接在后端执行其验证。我在索引页上使用useEffect来在cookie过期时注销。如果没有cookie,则需要注销。当我在开发阶段(在localhost上)时,一切都完美地工作。但当我把这个项目现场,它不工作。我使用vercel作为前端服务器,aws ec2作为后端服务器。

index.js - logout useEffect

useEffect(() => {
        console.log(getCookie('acces_token'));
        if (getCookie("access_token") === undefined) {
            logOut(dispatch);
        }
    }, [])

快捷google登录控制器

const googleAuth = async (req, res, next) => {
  try {
    const user = await User.findOne({ email: req.body.email });
    if (user) {
      const token = jwt.sign({ id: user._id }, process.env.SECRET_KEY, { expiresIn: "5d" });
      res.cookie("access_token", token, {
        secure: true,
        sameSite: "none",
        expires: new Date(Date.now() + (30 * 24 * 3600000))
      })
      res.status(200).json(user._doc)
    } else {
      const newUser = new User({
        ...req.body
      })
      const savedUser = await newUser.save();
      const token = jwt.sign({ id: savedUser._id }, process.env.SECRET_KEY, { expiresIn: "5d" });
      res.cookie("access_token", token, {
        secure: true,
        sameSite: "none",
        expires: new Date(Date.now() + (30 * 24 * 3600000))
      })
      res.status(200).json(savedUser._doc)
    }
  } catch (err) {
    console.log(err)
  }
}

主要问题是我可以通过localhost提供cookie访问。我也可以看到cookie当网站是活的。问题是,当他试图读取时,他只是抛出undefined。虽然里面有数据。

像这样x1c 0d1x

ffx8fchx

ffx8fchx1#

我后来用cookie域解决了这个问题。在域名部分写上“. yourdomain.com”,当设置cookie时,它将接受所有与域名链接的cookie。

相关问题