编辑:
我只是尝试使用以下语法req.logIn(user, { session: false }, function(err) {
并禁用了会话交互。似乎是这样工作的,所以问题出在这一特定部分。
我将Passport与结合到MySQL的本地策略结合使用,当我从数据库中检查数据时一切都很好。
app.post('/login', function(req, res, next) {
passport.authenticate('local-login', function(err, user, message) {
if (req.isAuthenticated()) {
return res.redirect('/');
}
if (err) {
return next(err);
}
if (!user) {
return res.redirect('/login');
}
let username = user.username;
req.session.username = username;
req.session.email = user.email;
req.session.verified = user.verified;
req.session.connected = true;
req.logIn(user, function(err) {
if (err) { return next(err); }
return res.redirect('/someURL');
});
})(req, res, next);
});
但是,req.logIn
步骤不起作用,它确实更改了url,但页面从未呈现,因此我必须停止服务器来解锁页面。如果删除req.logIn
函数,则不会遇到任何问题,并且重定向将完成此工作。
如果我在此函数之后(使用await
运算符编写重定向),它仍然无法正常工作。我猜logIn
进行了一些后台操作,例如在会话中存储用户的信息,但是由于在控制台中没有看到任何错误,而Chrome没有得到任何响应,因此我无法弄清楚出了什么问题。{{3} }