2017-06-02 54 views
0

我需要创建通过护照JS用户对象的会话,但在的这部分代码,我可以只添加的所有用户对象,或user.id:如何从用户对象中删除密码字段中的护照

passport.serializeUser(function(user, done) { 
     done(null, **user.id or user** ); 
     }); 

我的对象: VAR userSchema = mongoose.Schema({ 本地:{ 电子邮件:字符串, 密码:字符串, }, });

passport.serializeUser(function(user, done) { 
//Also i tried to delete object field here 
    //(delete user.local.password) , 
      //but it didn't help 
    done(null, user.id); 
}); 

有人可以帮我吗?

回答

0

这就是serializeUserdeserializeUser的用途。

这两个功能是彼此相反的!

serializeUser您应该在会话中放入user.id,而deserializeUser是获取整个用户数据。 (例如从数据库中例如)。

参见:

passport.serializeUser(function (user, cb) { 
    cb(null, user.id) 
}) 

passport.deserializeUser(function (id, cb) { 
    // here you can find by Id, or do any query you want. 
    User.findById(id, function(err, user) { 
     // here you can change to user object (removing the password), before pass it the cb function 
     cb(err, user); 
    }) 
}) 

希望它可以帮助你!

+0

你真的帮了我)现在,我明白了serializeUser和deserializeUser之间的区别)我们可以在req.user中使用deserializeUser获取数据)使用serializeUser的数据存储在req.session中。我们可以在req.session中只添加user.id或所有的用户对象,这是真的吗?)非常感谢你)) –

+0

是的,它是...... –