Sur mon formulaire de connexion, je n'ai que les champs de saisie "email" et "mot de passe". Passport local attend un nom de nom d'utilisateur et lance un [MissingUsernameError: aucun nom d'utilisateur n'a été donné]. Est-il possible de laisser le passeport local ne pas s'attendre à un nom d'utilisateur?Passeport local mongoose: aucun nom d'utilisateur n'a reçu d'erreur
0
A
Répondre
0
Si vous souhaitez utiliser l'adresse e-mail au lieu du nom d'utilisateur, vous devez en informer le passeport. Pour ce faire, veuillez consulter l'extrait de code suivant:
passport.use(new LocalStrategy({
usernameField: 'email', // this is where you do that
passwordField: 'password'
},
(email, password, done) => {
User.findOne({
email: email
}, (error, user) => {
if (error) {
return done(error);
}
if (!user) {
return done(null, false, {
message: 'Username or password incorrect'
});
}
// Do other validation/check if any
return done(null, user);
});
}
));
+0
J'ai compris. Également nécessaire pour modifier var newUser = new User ({nom d'utilisateur: req.body.email ....}); dans la route du poste d'inscription. Merci beaucoup! – Jon
Oui il y a. Utilisez-vous un courriel à la place du nom d'utilisateur? –
Oui en utilisant l'email à la place. – Jon