我的模型看起来像这样,但是当我尝试使用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);
});
});
}
));
答案 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()));