2017-04-22 39 views
0

這裏是情況,我創建了一個取決於用戶文檔的jwt令牌,但問題是出於安全性原因,我不想在傳遞到我的encode函數中的user對象中包含密碼字段。從返回的貓​​鼬文檔實例中刪除一個屬性。 MongoDB

router.post('/admin/login', (req, res, next)=>{ 
    passport.authenticate('local-login', (err, user, info)=> { 
    if (err) { 
     return next(err); 
    }else if (!user) { 
     return res.json(info) 

    }else { 
     user.toObject(); 
     delete user.password; 
     console.log(`User is ${user}`); 
     let token = encode(user, 'inav'); 
     return res.send(token) 
    } 

    })(req, res, next); 
}) 

我試過這個,但是這不起作用。 user仍然包含密碼

回答

1

如果https://github.com/jaredhanson/passport-local是您使用的護照策略,它將返回貓鼬模型。您必須將其轉換爲普通對象才能刪除密碼屬性。 toObject返回一個必須存儲在變量中的對象。

const userObj = user.toObject(); 
delete userObj.password; 
console.log(`User is ${userObj}`); 
const token = encode(userObj, 'inav'); 

http://mongoosejs.com/docs/api.html#document_Document-toObject

+0

有趣的是前,我曾嘗試這樣做,也沒有工作。謝謝您的回答。 –