Próbuję uwierzytelnić użytkownika i zalogować się do niego natychmiast po przesłaniu testu POST w formularzu /register
. Najlepiej byłoby, gdyby użytkownicy mogli się zarejestrować, a następnie zostać przekierowani bezpośrednio do pulpitu, bez konieczności ponownego wprowadzania swoich danych uwierzytelniających.Uwierzytelnianie paszportu natychmiast po rejestracji nowego użytkownika
Mój serwer używa usługi Passport 0.1.17 z lokalną strategią skonfigurowaną do używania adresu e-mail i hasła do logowania. Obecny kod to:
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');
});
Jak mogę zmienić ten kod, aby zapisać nowego użytkownika, a następnie uwierzytelnić i ostatecznie przekierować na pulpit?
Z góry dziękuję!
Użyj metody 'req.logIn', aby uwierzytelnić się bezpośrednio po rejestracji. – moka
Dzięki za odniesienie do 'req.logIn', którego wcześniej nie zdawałem sobie sprawy. Czy możesz podać bardziej szczegółowy kod. Próbowałem następujących po ostatnim komentarzem w powyższym pytanie, ale to nie działa: 'req.login (registerUser, funkcja (err) { if (err) {return next (err);} return res.redirect ('/ dashboard'); }); ' – surfearth
Musisz podać szczegóły, które są używane do deserializacji użytkownika, zwykle jest to identyfikator użytkownika, który jest przechowywany w sesji. – moka