我正在用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
1条答案
按热度按时间ffx8fchx1#
我后来用cookie域解决了这个问题。在域名部分写上“. yourdomain.com”,当设置cookie时,它将接受所有与域名链接的cookie。