Аутентификация паспорта сразу после регистрации нового пользователя
Я пытаюсь выполнить аутентификацию и логин пользователя сразу после отправки POST в форме /register
. В идеале я бы хотел, чтобы пользователи могли зарегистрироваться, а затем перенаправляться сразу на панель инструментов, не вводя их учетные данные снова.
Мой сервер использует 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');
});
Как бы я реорганизовал этот код, чтобы сохранить нового пользователя, затем аутентифицировать и, наконец, перенаправить на панель управления?
Спасибо заранее!
Ответы
Ответ 1
Вот решение, которое я придумал после прочтения req.login:
app.post('/register', function(req, res) {
// attach POST to user schema
var user = new User({ email: req.body.email, password: req.body.password, name: req.body.name });
// save in Mongo
user.save(function(err) {
if(err) {
console.log(err);
} else {
console.log('user: ' + user.email + " saved.");
req.login(user, function(err) {
if (err) {
console.log(err);
}
return res.redirect('/dashboard');
});
}
});
});
Я хотел бы немного почистить его и подумать, что раздел err может быть более надежным, но это действующее решение. Обратите внимание, что кто-то другой реализует это, им следует знать, что он предназначен для использования локальной стратегии паспорта с электронной почтой вместо имени пользователя.