我正在使用本地护照在我的节点应用上提供本地身份验证。但是,我想将其更改为使用电子邮件地址而不是用户名进行身份验证。有没有办法做到这一点?
谢谢。
答案 0 :(得分:12)
您必须先使用{usernameField:'email'}将默认用户名字段更改为电子邮件,然后您可以根据电子邮件运行数据库搜索并检查密码:
passport.use(new LocalStrategy({ usernameField: 'email' }, function(email, password, done) {
UserModel.findOne({ email: email }, function(err, user) {
// Check password functionality
})
})
答案 1 :(得分:4)
由于您必须自己实现验证(在LocalStrategy
验证程序回调中),您可以将任何内容传递给它:
passport.use(new LocalStrategy(function(email, password, done) {
// search your database, or whatever, for the e-mail address
// and check the password...
});
答案 2 :(得分:0)
您可以在数据库中查询来自请求参数的电子邮件ID,如下所示:
passport.use('signup', new LocalStrategy({
passReqToCallback : true // allows us to pass back the entire request to the callback
},
function(req, username, password, done) {
//console.log(email);
console.log(req.param('email'));
findOrCreateUser = function(){
// find a user in Mongo with provided username
User.findOne({ 'email' : req.param('email') }, function(err, user) {
});
}))