我试图在/register
表单上提交POST后立即进行认证和登录用户。理想情况下,我希望用户能够注册,然后立即重定向到仪表板,而无需再次输入凭据。新用户注册后立即通过护照认证
我的服务器正在使用Passport 0.1.17,本地策略配置为使用电子邮件地址和密码进行登录。当前的代码是:
app.post('/register', function(req, res) {
// attach POST to new User variable
var registerUser = new User({ email: req.body.email, password: req.body.password, name: req.body.name });
// save registerUser Mongo
registerUser.save(function(err) {
if(err) {
console.log(err);
} else {
console.log('registerUser: ' + registerUser.email + " saved.");
}
});
// here is where I am trying to authenticate and then redirect
passport.authenticate('local', { failureRedirect: '/login', failureFlash: true }),
res.redirect('/dashboard');
});
我该如何重构此代码以保存新用户,然后进行身份验证并最终重定向到仪表板?
在此先感谢!
使用'req.logIn'方法在注册后直接进行身份验证。 – moka
感谢您引用'req.logIn',这是我以前不知道的。你能提供更具体的代码吗?我在上面的问题的最后一个注释之后尝试了以下内容,但它不起作用:'req.login(registerUser,function(err){if(err){return next(err);} return res.redirect '/ dashboard'); });' – surfearth
您需要提供用于反序列化用户的详细信息,通常它是存储在会话中的用户的ID。 – moka