我知道這個問題已經被問過,但我無法找到一個合適的回答。 這是控制檯錯誤。護照扔user.authenticate不是一個函數
TypeError: user.authenticate is not a function
at /home/sinnedde/WebstormProjects/web-services/config/strategies/local.js:24:23
這裏是local.js用來檢查用戶名和密碼是否正確。
var passport = require('passport'),
LocalStrategy = require('passport-local').Strategy,
User = require('mongoose').model('User');
module.exports = function() {
passport.use(new LocalStrategy(function (username, password, done) {
User.findOne({
username: username
}, function (err, user) {
if (err) {
return done(err);
}
if (!user) {
return done(null, false, {
message: 'Invalid Username or Password'
});
}
if (!user.authenticate(password)) {
return done(null, false, {
message: 'Invalid Username or Password'
});
}
return done(null, user);
});
}));
};
這裏是控制器中的登錄方法。
exports.signin = function (req, res, next) {
passport.authenticate('local', function (err, user, info) {
if (err || !user) {
res.send(info);
} else {
res.json({
status: 'true',
message: 'Logged In'
});
}
})(req, res, next);
};
我通過郵遞員發送請求。如果用戶名無效,我會得到正確的回覆,但如果密碼無效,則會出現上述錯誤。我不知道什麼是錯的。請幫忙。
謝謝。但是,我正在使用護照的本地策略來驗證登錄。我以前做過,沒有問題。但現在我正在得到這個。代碼有問題嗎? –
也許看看這個鏈接http://mherman.org/blog/2015/01/31/local-authentication-with-passport-and-express-4/#.WLxOrhIrJ60 – hya
我試圖貓鼬護照插件。但它拋出一個新的錯誤' 'CB' 是不是一個function' –