У меня проблема при использовании паспортной стратегии с использованием локального паспорта с использованием узлов js и mongoose. Иногда (не всегда) отображается следующая ошибка, которой я не мог понять, и я не мог войти в систему. Я использовал угловой JS для клиентской стороны.Ошибка Mongoose schematype.castForQuery. Ошибка аутентификации пользователя
TypeError: schematype.castForQuery is not a function
at cast (/Users/Harry/Desktop/socketio/node_modules/mongoose/lib/cast.js:229:32)
at Query.cast (/Users/Harry/Desktop/socketio/node_modules/mongoose/lib/query.js:2753:12)
at Query.findOne (/Users/Harry/Desktop/socketio/node_modules/mongoose/lib/query.js:1353:10)
at Function.findOne (/Users/Harry/Desktop/socketio/node_modules/mongoose/lib/model.js:1343:13)
at Strategy._verify (/Users/Harry/Desktop/socketio/app_api/config/passport.js:17:8)
at Strategy.authenticate (/Users/Harry/Desktop/socketio/node_modules/passport-local/lib/strategy.js:90:12)
at attempt (/Users/Harry/Desktop/socketio/node_modules/passport/lib/middleware/authenticate.js:348:16)
at authenticate (/Users/Harry/Desktop/socketio/node_modules/passport/lib/middleware/authenticate.js:349:7)
at module.exports.login (/Users/Harry/Desktop/socketio/app_api/controllers/authentication.js:302:4)
at Layer.handle [as handle_request] (/Users/Harry/Desktop/socketio/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/Harry/Desktop/socketio/node_modules/express/lib/router/route.js:131:13)
at Route.dispatch (/Users/Harry/Desktop/socketio/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/Users/Harry/Desktop/socketio/node_modules/express/lib/router/layer.js:95:5)
at /Users/Harry/Desktop/socketio/node_modules/express/lib/router/index.js:277:22
at Function.process_params (/Users/Harry/Desktop/socketio/node_modules/express/lib/router/index.js:330:12)
at next (/Users/Harry/Desktop/socketio/node_modules/express/lib/router/index.js:271:10)
Вот мой код, который указывающего ошибку в: Я попытался войти, но он говорит, что вышеуказанные ошибки иногда (не всегда) .Я не мог найти ошибки.
module.exports.login = function(req, res) {
if (!req.body.email || !req.body.password) {
sendJSONresponse(res, 400, {
"message": "All fields Required."
});
return;
}
passport.authenticate('local', function(err, user, info) {
var token;
if (err) {
sendJSONresponse(res, 400, err);
return;
}
// console.log('user detail : '+user);
if (user && user.verified === true) {
token = user.generateJwt();
sendJSONresponse(res, 200, {
"token": token
});
} else {
sendJSONresponse(res, 401, info);
}
})(req, res); // make sure that req, res are available to the passport
};
Вот код паспорта стратегии:
passport.use(new LocalStrategy({
usernameField: 'email'
},
function(username, password, done) {
User.findOne({
email: username
}, function(err, user) {
if (err) {
console.log("passport_error : "+err);
return done(err);
}
if (!user) {
return done(null, false, {
"message": "Incorrect Username."
});
}
if (!user.validPassword(password)) {
return done(null, false, {
"message": "Incorrect Password." + password
});
}
console.log(user);
return done(null, user);
});
}
));
Пожалуйста, добавьте следующую строку ведения журнала. Если выход не является '{}', то это ваша проблема. 'console.log (« Object.prototype: », Object.prototype);' – joeytwiddle
@joeytwiddle Да, я сделал это. Сначала я получил {}. И я смог войти в систему успешно. Но когда я начинаю общаться с кем-то и выходить из системы, я не могу войти. Мой адрес электронной почты доходит до функции внутри моего паспорта (функция (имя пользователя, пароль, сделанный)). Здесь имя пользователя печатается независимо от того, что я даю, но он не подходит к этому и не проверяет базу данных. И на этот раз я получил (Object.prototype: {getKey: [Function]}) вместо {}. Можете ли вы выяснить, что может быть? благодаря –