Expressredirect和本地人

我正在使用passportjs为了login用户,我尝试在用angularjs完成密码validation之后redirect它们。 但是,当我尝试在另一页上获取用户数据时,我总是收到“无法读取未定义的属性名”片段:

app.post('/login', function(req, res, next) { passport.authenticate('local', function(err, usr, info) { res.locals.user = req.usr; res.json({msg:true}); return next(); })(req, res, next); }); 

而在别的地方,我试图做这样的事情:

 user.find({name: req.user.name },function(err,q){ 

哪个启动错误“无法读取未定义的属性'名称'

您必须提供serializeUserdeserializeUser serializeUser用户函数的护照,以便护照将用户存储在请求对象中。 欲了解更多信息,请查看指南:

http://passportjs.org/guide/configure/

具体来说,看看Sessions的底部。 另外,请参考这个类似的问题:

我是否实现序列化和反序列化NodesJS + Passport + RedisStore?

在你的情况下,它看起来像你使用name而不是id来识别用户,所以无论你在哪里configuration护照,你可能会想要做的事情如:

 passport.serializeUser(function(user, done) { done(null, user.name); }); passport.deserializeUser(function(name, done) { user.find({name: req.user.name }, function(err, user){ done(err, user); }); });