这是我的 Passport
的中间件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});
});
});
正确唤醒注册方法并将数据发送到数据库,但它也有错误重定向到具有相同TypeError的Profile页面!
最后,这是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"
}
我希望有人帮助我,我被困在这里!我无法继续前进。
答案 0 :(得分:1)
这里你试图直接从req对象访问user_id。
User.findOne({'user._id': req.user._id},
将其更改为
router.post('/profile', function (req, res, next) {
User.findOne({'user._id': req.body.user._id}, function (err, user) {
if (err) return next(err);
res.render('accounts/profile', { user : user});
});
});
您无法在GET请求的正文中发送数据。因此,将其更改为POST,然后如果您尚未声明bodysarser中间件,则首先声明它,然后您的请求中的POST请求中的数据将可用。
答案 1 :(得分:1)
从docs开始,按照代码
序列化和反序列化用户与会话的使用getImageURI()
答案 2 :(得分:0)
最后,我通过降级 package.json 文件中的某些依赖项来解决了我的错误 依赖关系将如此:
"dependencies": {
"bcrypt-nodejs": "0.0.3",
"body-parser": "^1.14.2",
"connect-mongo": "^1.1.0",
"cookie-parser": "^1.4.0",
"ejs": "^2.3.4",
"ejs-mate": "^2.3.0",
"express": "^4.13.3",
"express-flash": "0.0.2",
"express-session": "^1.12.1",
"mongoose": "^4.3.4",
"morgan": "^1.6.1",
"passport": "^0.3.2",
"passport-local": "^1.0.0"
}
然后一切正常,至少在我的情况下:) 谢谢大家。