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){
哪个启动错误“无法读取未定义的属性'名称'
您必须提供serializeUser
和deserializeUser
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); }); });