Я создаю простое приложение для веб-приложений в экспресс, и я немного застрял в аутентификации для своих сеансов, и я собираюсь проверить все на клиенте с помощью магистрали и regExp в конце концов, когда я начну создавая переднюю часть приложения. no basycally у меня проблема с запросом в mongoose, возвращающем объект документа mongoose. Я искал пару решений, в запросе вы можете использовать .lean() для получения объекта или захватить возврат из запроса и применить .toObject(), что все работает отлично и денди, однако, когда Я пытаюсь и аутентифицирую значение ключа с строкой, которая возвращает false. я отправлю пример кода, его не совсем то, что у меня есть, но его достаточно близко, чтобы получить смысл.аутентификация узла + экспресс + mongoose
это будет примером моих моделей файл
var User = new Schema({}, { strict: false });
User.method('authenticate', function(plainText) {
var object = this.toObject();
return plainText == object.password; });
mongoose.model('User', User);
mongoose.connect(definitions.dbConnect);
и в моем файле приложения я бы что-то вроде
app.get('/session', routes.showLogin);
app.post('/session/new', routes.login);
и в моем пути файла идентификатору есть что-то вроде
exports.login = function(req, res){
var userQuery = new RegExp(req.body.username , 'i');
var passwordQuery = new RegExp(req.body.password, 'i');
var Query = User.find();
Query.findOne().where('username', userQuery).exec(function(err, user){
if(user && user.authenticate((req.body.password))){
req.session.userId = user._id;
}else{
res.redirect('/session');
}
});
},
Любые идеи были бы оценены, вероятно, это очень глупо ...:/
Спасибо!
Я бы начал с определения того, что означает 'plainText' и' object.password', что может дать вам ключ, почему функция возвращает 'false'. – robertklep