Sto utilizzando il passaporto per l'autenticazione e la gestione delle sessioni. Tutto funziona bene finora. Ho implementato un modulo "Accedi" per aggiungere nuovi utenti all'app. Dopo aver aggiunto un utente, desidero collegarlo automaticamente.Passport + Node.js/Accesso automatico dopo l'aggiunta dell'utente
Qual è il modo migliore per ottenere questo - devo reindirizzare a "/ login" con le credenziali dell'utente o c'è un altro/modo migliore (chiamare serializeUser) per farlo?
Finora penso che non ho capito davvero il modo in cui la funzione di "fatto" (in serializeUser e LocalStrategy) sta lavorando o che cosa sta facendo ...
Ecco il mio codice:
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('/');
}
});
});
Qualcuno sa come fare questo?
Perché avrebbe la funzione deserialize accesso DB? Non può semplicemente tornare fatto (null, id); ? – Se7enDays