我有一个带护照的 node.js 登录系统,但我想弄清楚如何使用用户名或电子邮件登录用户。我只能使用电子邮件或用户名单独登录用户。我不知道如何编写代码来满足他们的用户名和电子邮件。因此,如果用户想使用用户名登录,他们可以,或者如果希望使用他们的电子邮件,他们也可以。这是我的 users.js 文件中的 localstrategy 代码:
passport.use(new LocalStrategy(
function(email, password, done) {
User.getUserByEmail(email, function(err, user, next){
if(err) throw err;
if(!user){
return done(null, false, {message: 'Unknown user'});
}
User.comparePassword(password, user.password, function(err, isMatch){
if(err) throw err;
if(isMatch){
return done(null, user);
} else {
return done(null, false, {message: 'Invalid password'});
}
});
});
}));
Run Code Online (Sandbox Code Playgroud)
这是我的 user.js 中的 module.exports:
module.exports.getUserByEmail = function(email, callback){
var query = {email: email};
User.findOne(query, callback);
}
module.exports.getUserById = function(id, callback){
User.findById(id, callback);
}
module.exports.comparePassword = function(candidatePassword, hash, callback){ …Run Code Online (Sandbox Code Playgroud)