Вот мой Middleware с PassportUser.findOne() Всегда бросать ошибку Не удается прочитать свойство '_id' неопределенных - NodeJS
passport.use('local-login', new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true
}, function (req, email, password, done) {
User.findOne({ email: email}, function (err, user) {
if (err) return done(err);
if(!user) {
return done(null, false, req.flash('loginMessage', 'No user found!'));
}
if (!user.comparePassword(password)) {
return done(null, false, req.flash('loginMessage', 'Oops! Wrong password.'));
}
return done(null, user);
});
}));
и это мой метод POST Войти
router.post('/login', passport.authenticate('local-login', {
successRedirect: '/profile',
failureRedirect: '/login',
failureFlash: true
}));
После этого я пытаюсь перенаправить на страницу профиля GET:
router.get('/profile', function (req, res, next) {
User.findOne({'user._id': req.user._id}, function (err, user) {
if (err) return next(err);
res.render('accounts/profile', { user : user});
});
});
Регистрация метод woking правильно и отправить данные в базу данных, но также имеет ошибку перенаправления на страницу профиля с тем же TypeError!
Наконец, здесь зависимостей в package.json
"dependencies": {
"bcrypt-nodejs": "0.0.3",
"body-parser": "^1.15.2",
"connect-mongo": "^1.3.2",
"cookie-parser": "^1.4.3",
"ejs": "^2.5.5",
"ejs-mate": "^2.3.0",
"express": "^4.14.0",
"express-flash": "0.0.2",
"express-session": "^1.14.2",
"mongoose": "^4.7.4",
"morgan": "^1.7.0",
"passport": "^0.3.2",
"passport-local": "^1.0.0"
}
Я надеюсь, что кто-то помогает мне, вот я застрял! Я не могу двигаться дальше.
'req.user' похоже не определено. – str
Я думаю, что пользователь не сериализуется для сеанса. – Bhavana
@str Я определил его так: 'app.use (function (req, res, next) { res.locals.user = req.user; next(); });' –