小编Ste*_*hen的帖子

如何允许用户使用 node.js 通过用户名或电子邮件登录

我有一个带护照的 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)

javascript authentication node.js passport.js

6
推荐指数
1
解决办法
3961
查看次数

标签 统计

authentication ×1

javascript ×1

node.js ×1

passport.js ×1