以下是我注册路线:
(我用的是passport-local-mongoose)
router.post("/register", (req,res)=>{
console.log(req.body);
User.register({
username: req.body.username,
mail: req.body.email
}, req.body.password, (err, user)=>{
err ? console.log(err) : passport.authenticate("local")(req, res, () => {
console.log(user.username + " registered and logged in.");
// console.log(user);
res.send(req.isAuthenticated());
console.log(req.user);
})
})
});
字符串
用户创建和验证后,一切都很好。我有req.user对象,我有isAuthenticated为true(我尝试以1秒的间隔记录它-总是返回true)。但是,如果我尝试检查用户是否经过身份验证,从一些不同的路线,例如:
router.get("/getUser", (req, res)=>{
res.send(req.user);
console.log(req.isAuthenticated());
})
型
我立即在控制台中得到false,并从req. user中得到undefined。看起来问题是--在认证之后对服务器的任何请求都会删除req.user
2条答案
按热度按时间yquaqz181#
答案很晚,但我昨天也遇到了同样的问题,需要努力学习,因为这里没有答案:)。
如果您在发送请求时没有指定,则前端的cookie不会更新,方法是添加:
{ withCredentials: true }
,并且必须在注册/登录POST路由上执行此操作f.e:
字符串
但要做到这一点,你必须在服务器上传递一些cors选项:
型
r7s23pms2#
在设置会话时,将saveUninitialized设置为false,选择false对于实现登录会话很有用。默认值为true,但不建议使用默认值,因为默认值将来会更改。
字符串