TypeError:user.verifyPassword不是函数

时间:2016-08-20 12:45:28

标签: node.js passport.js

我的模型看起来像这样,但是当我尝试使用verifyPassword时,它说TypeError:user.verifyPassword不是函数

var passport = require('passport');
var BasicStrategy = require('passport-http').BasicStrategy;
var User = require('../models/user');

passport.use(new BasicStrategy(
      function(username, password, callback) {
        User.findOne({ username: username }, function (err, user) {
          if (err) { return callback(err); }

          // No user found with that username
          if (!user) { return callback(null, false); }

          // Make sure the password is correct
          // Error comind at this point
          user.verifyPassword(password, function(err, isMatch) {
            if (err) { return callback(err); }

            // Password did not match
            if (!isMatch) { return callback(null, false); }

            // Success scenario
            return callback(null, user);
          });
        });
      }
));

4 个答案:

答案 0 :(得分:0)

尝试使用User.verifyPassword函数

但更正确的答案显示您的用户模型

您的用户架构中应该包含以下内容:

java.lang.NullPointerException

答案 1 :(得分:0)

由于数据是通过post方法发送的,因此express无法解析数据,因为由于某些问题而已从express中省略了body-parser中间件。因此,您必须手动添加它。导入正文解析器:

  

npm install body-parser

将这些行添加到您的代码中。

    app.use(bodyParser.urlencoded({ extended: false })); 
    app.use(passport.initialize());

同时定义这两个功能。

    passport.serializeUser(function(user, done) {
        done(null, user); 
    });

    passport.deserializeUser(function(user, done) {
        done(null, user); 
    });

答案 2 :(得分:0)

我知道我迟到但你可以这样做,

passport.use(
    'local',
    new LocalStrategy(function(username, password, done) {
        console.log('HAKSKAJS');
        User.findOne({ username: username }, function(err, user) {
            if (err) {
                return done(err);
            }
            if (!user) {
                return done(null, false);
            }
            if (user.password != password) {
                return done(null, false);
            }
            return done(null, user);
        });
    })
);

参考:https://github.com/sikandar114/node-auth-pass-local/blob/master/config/passport.js

答案 3 :(得分:0)

尝试使用passport.use(new LocalStrategy(User.authenticate()));