如何从护照中的用户对象中删除密码字段

时间:2017-06-02 12:28:23

标签: mongodb mongoose passport.js

我需要通过护照js创建与用户对象的会话,但在代码的这一部分,我只能添加所有用户对象,或者user.id:

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

我的目标:    var userSchema = mongoose.Schema({     本地:{         电子邮件:String,         密码:字符串,     },     });

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 );
});

有人可以帮我吗?

1 个答案:

答案 0 :(得分: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);  
    })
})

希望它可以帮到你!