我正在尝试正确设置我的护照会话。我已经达到这样的程度,在用户注册后 - 我执行req.login()
然后我有一个控制台消息,console.log(req.user)
。它返回:
{ email: 'xxxx', password: 'xxxx', id: 0 }
因此,似乎在用户创建后,req.user
可用。但是,当用户登录时,我有这条路线:
app.post('/login', passport.authenticate('local-login', { failureRedirect: '/login'}),
function(req, res) {
console.log(req.user);
res.redirect('/users');
}
);
该控制台消息(来自后调用)返回:
{ id: null,
email: 'xxxxx',
password: 'xxxxx' }
正如您所看到的 - 登录后 - 它会重定向到/users
- 这是我的获取请求:
app.get('/users', function(req, res){
console.log(req.user);
res.render('partials/profile.html');
});
该控制台消息返回undefined
- 因此req.user
未被传递。此外,如果我用console.log(req.session)
检查会话,我会得到:
{ cookie:
{ path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true,
secure: true },
passport: {} }
所以你可以看到 - cookie中没有护照用户,它是一个空集。
我哪里错了?
谢谢!
答案 0 :(得分:2)
我遇到了同样的问题,我只是在登录帖子中将会话名称设置为用户名。然后我可以在应用程序的其余部分得到它。
app.post('/login', passport.authenticate('local-login', { failureRedirect: '/login'}),
function(req, res) {
console.log(req.user);
req.session.user = req.user;
res.redirect('/users');
}
);
所以你可以在任何地方访问它。