2016-04-21 15 views
8

मैं नोड.जेएस विकास के लिए नया हूं और वर्तमान में अपने खाली समय पर एक पालतू परियोजना पर काम कर रहा हूं।पासपोर्ट-फेसबुक और पासपोर्ट-जेडटी मिश्रण करने का सबसे अच्छा तरीका क्या है?

अभी तक मैंने रणनीति के लिए passport और passport-jwt का उपयोग करके जेडब्ल्यूटी प्रमाणीकरण बनाया है और मैं इसे अपने सभी रीस्टफुल एपीआई में उपयोग कर रहा हूं।

अब मैं इसे किसी प्रकार के फेसबुक प्रमाणीकरण के साथ मिश्रण करने की सोच रहा हूं, फिर भी टोकन प्रमाणीकरण के साथ रहना चाहता हूं।

exports.authenticate = function(req, res) { 
    User.findOne({ 
     email: req.body.email 
    }, function(err, user) { 
     if (err) 
      return res.status(400).send(getErrorMessage(err)); 

     if (!user) { 
      res.status(400).send({ 
       success: false, 
       message: 'Authentication failed. User not found.' 
      }); 
     } else { 
      if (user.checkPassword(req.body.password)) { 

       let token = jwt.encode(user, config.secretPhrase); 

       res.json({ 
        success: true, 
        token: 'JWT ' + token 
       }); 
      } else { 
       res.status(401).send({ 
        success: false, 
        message: 'Authentication failed. Wrong password.' 
       }); 
      } 
     } 
    }); 
}; 

app.route('/api/users/authenticate') 
     .post(user.authenticate); 

और मैं निम्नलिखित है मान्य करने के लिए:

वर्तमान में यह मैं कैसे पैदा कर रहा हूँ और टोकन प्राप्त है

let user = require('../../app/controllers/user-controller'); 
app.route('/api/todos') 
     .get(user.validateLogin, todos.list) 
     .post(user.validateLogin, todos.create); 

उपयोगकर्ता के नियंत्रक:

exports.validateLogin = passport.authenticate('jwt', { 
    session: false 
}); 

किसी को भी दो रणनीतियों को मिश्रण करने के लिए एक साफ तरीका सुझा सकते हैं? क्या मुझे express-jwt का उपयोग करना चाहिए? एक्सप्रेस-जेडटी और पासपोर्ट-जेडटी के बीच क्या अंतर है?

उत्तर

0

ऐसा लगता है कि वर्तमान में आप अंतिम उपयोगकर्ता को टोकन वापस भेज रहे हैं। आप उस ग्राहक पक्ष को कैसे सहेज रहे हैं? मैं jsonwebtoken की तरह एक साधारण जेडब्ल्यूटी लाइब्रेरी का उपयोग करने की सिफारिश करता हूं, और टोकन को httpOnly कुकी के रूप में सेट करता हूं। यदि आप वर्तमान में स्थानीय स्टोरेज में इसे सहेज रहे हैं तो आप XSS हमले के लिए अधिक संवेदनशील हो सकते हैं। https://gist.github.com/briancw/8c2021817c3bd34972e8e8deb6048a4f

0

क्या आप नई रणनीति के साथ passport-jwt साथ क्या किया था की तरह passport-facebook उपयोग कर सकते हैं, ताकि आप अपने डेटाबेस में फेसबुक उपयोगकर्ता टोकन बचा सकता है और: यहाँ कैसे मैं वर्तमान सेटिंग से निपटने कर रहा हूँ और एक उपयोगकर्ता के लिए एक जेडब्ल्यूटी जाँच के साथ एक सार है अपना टोकन

वापस करें
संबंधित मुद्दे