ewi*_*ard 5 javascript cookies session node.js express
我正在尝试正确设置我的护照会话。我已经到了这样的地步:在用户注册后 - 我执行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');
}
);
Run Code Online (Sandbox Code Playgroud)
该控制台消息(来自调用后)返回:
{ id: null,
email: 'xxxxx',
password: 'xxxxx' }
Run Code Online (Sandbox Code Playgroud)
正如您所看到的 - 登录后 - 它重定向到/users- 这是我的获取请求:
app.get('/users', function(req, res){
console.log(req.user);
res.render('partials/profile.html');
});
Run Code Online (Sandbox Code Playgroud)
该控制台消息返回undefined- 所以req.user没有被传递。此外,如果我检查会话,console.log(req.session)我会得到:
{ cookie:
{ path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true,
secure: true },
passport: {} }
Run Code Online (Sandbox Code Playgroud)
所以你可以看到 - cookie 中没有护照用户,它是一个空集。
我哪里错了?
谢谢!
小智 3
我遇到了同样的问题,我只是将会话名称设置为登录帖子中的用户名。然后我就可以在应用程序的其余部分中获取它。
app.post('/login', passport.authenticate('local-login', { failureRedirect: '/login'}),
function(req, res) {
console.log(req.user);
req.session.user = req.user;
res.redirect('/users');
}
);
Run Code Online (Sandbox Code Playgroud)
所以你可以在任何地方访问它。