我正在使用护照进行身份验证和会话处理。到目前为止一切正常。我实现了一个“登录”表单来向应用程序添加新用户。添加用户后,我想自动登录他/她。
实现这一目标的最佳方法是什么 - 我应该使用用户凭据重定向到“/login”还是有另一种/更好的方法(调用 serializeUser)来做到这一点?
到目前为止,我认为我并没有真正理解“完成”功能(在 serializeUser 和 LocalStrategy 中)的工作方式或它在做什么......
这是我的代码:
passport.serializeUser(function(user, done) {
done(null, user._id);
});
passport.deserializeUser(function(id, done) {
authProvider.findUserById('users', id, function (err, user) {
done(err, user);
});
});
passport.use(new LocalStrategy( function(email, password, done) {
authProvider.getUserByEmail('users', email, function(error, user){
if(error) { return done(error); }
if (!user) { return done(null, false, { message: 'Unknown user ' + email });}
if (user.password != password) { return done(null, false);}
return done(null, user);
});
}
));
app.post('/login',
passport.authenticate('local', { failureRedirect: '/login'}),
function(req, res) { res.redirect('/');});
app.post('/sign', function(req, res){
authProvider.saveUser(...do stuff), function(error, user){
if(error){
res.redirect('/sign');
} else {
res.redirect('/');
}
});
});
有人知道该怎么做吗?