2013-10-08 8 views
5

भेज रहा है मैं उपयोगकर्ता प्रमाणीकरण के लिए पासपोर्टजेएस स्थानीय रणनीति का उपयोग कर रहा हूं, यह पूरी तरह से ठीक काम कर रहा है। हालांकि जब मैं किसी भी प्रमाणीकृत पृष्ठ पर console.log (req.user) को आज़माता हूं, तो मुझे वर्तमान लॉग इन उपयोगकर्ता के सभी डीबी प्रविष्टि विवरण मिलते हैं। क्या यह सामान्य है ? सहित पासवर्डपासपोर्टजेएस req.user सभी उपयोगकर्ता डेटा

{ 
    name: 'Test', 
    email: '[email protected]', 
    password: '$2a$10$aw2aMtXtrmKHi.kd97c0NeMOu6Y0hlcM4xk2VuqfneLYdEkc676eq', 
    phone: 9xxxxx6, 
    _enabled: true, 
    _id: 5253f326003e55f028000001, 
    __v: 0 
} 

टुकड़ों में बांटा मेरे स्थानीय रणनीति इस तरह परिभाषित किया गया है।

passport.use(new strategy(function(username, password, done) { 
User.findOne({ "email": username }, function(err, user) { 
    if (err) { return done(err); } 
    if (!user) { return done(null, false, { message: 'Unknown user ' + username }); } 
    if(user._enabled==false) return done(null,false,{message: "Dear "+user.name+", Please verify your email first!"}); 
    if(bcrypt.compareSync(password,user.password)){ 
    return done(null, user); 
    app.set("userEmail",username); 
    } 
    else { 
    return done(null, false, { message: 'Invalid password' }); 
    } 
db.close(); 
}) 
})); 

क्या कोई संभावना है कि इस डेटा को छेड़छाड़ की जा सकती है?

उत्तर

1

हां इसे tmpered किया जा सकता है। उपयोगकर्ता जो req ऑब्जेक्ट से बंधे हैं deserializeUser का उपयोग करके लोड किया जाता है।

कृपया देखें: http://passportjs.org/guide/configure/ और "सत्र" खंड।

0

ओकेई मुझे जवाब मिला, मैं ठीक से deerializing नहीं था!

passport.deserializeUser(function(id, done) { 
    User.findOne({_id:id}, function (err, user) { 
    done(err, user._id); 
    }); 
}); 
संबंधित मुद्दे