“错误:非法参数:字符串,未定义”并在节点JS中停止服务器

Bud*_*ana 5 javascript authentication node.js

我正在尝试在节点JS中构建日志记录应用程序。在这里密码验证应用程序无法正常工作。当我输入用户名和密码时,会发生以下错误并停止服务器。

this is the error.
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

这是验证部分的代码

passport.use(new LocalStrategy(
function(username, password, done) {
    User.getUserByUsername(username, function(err, user){
       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)

此代码适用于未知用户。但不适用于比较用户名和密码。我在这里看不到任何错误。我需要帮助解决此问题。

Bud*_*ana 2

我发现问题就在这里。这与代码无关。

问题是我注册了两个具有相同用户名和不同密码的用户。然后,当我尝试使用用户名和一个密码登录时,出现此错误并停止服务器。

因为从用户输入的用户名中查找密码存在尴尬的情况。因为有两个密码具有相同的用户名。