簡體   English   中英

Passport.js-返回部分用戶對象

[英]Passport.js - return partial user object

因此,我正在使用passport.js身份驗證並存儲與我的用戶模型相關的幾個子文檔:

var UserSchema = new Schema({
  fullName: {
    type: String,
    trim: true,
    default: ''
  },
  actions: [{
    title: String,
    step: Number,
    addIf: [String],
    added: { type: Date, default: Date.now }
  }]
});

我剛接觸過護照,但是想知道如何在登錄過程中將其配置為僅提供此用戶模型的一部分,類似於:

User.findOne({
  _id: id
}, '-actions', function(err, user) {
  // get user object
});

添加此中間件的最佳位置在哪里?

編輯:嘗試通過deserializeUser 有什么原因不起作用?

  passport.deserializeUser(function(id, done) {
    User.findOne({
      _id: id
    }, '-salt -password -actions', function(err, user) {
      done(err, user);
    });
  });

您應該在passport.deserializeUser方法中進行配置。

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

passport.deserializeUser(function(id, done) {
   User.findOne({_id: id}, {actions: 0}, function(err, user) {
    console.log(err);

    // output user
    console.log(user.toJSON());

    // get user object
    done(err, user);
   });
});

您可以在官方文檔中了解這些方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM