2015-09-10 12 views
5

के साथ JSONWebTokens एक्सप्रेस-जेडटी पैकेज लॉगिन (यानी स्थानीय स्टोरेज या सोशल मीडिया ओएथ या ओपनआईडी प्रदाताओं आदि) पर एकाधिक प्रमाणीकरण विकल्पों को बनाने में जबरदस्त लचीलापन की अनुमति देता है और फिर जेडब्ल्यूटी के साथ एप्लिकेशन की सुरक्षा करता है।एक्सप्रेस-जेडटी वीएस पासपोर्ट-जेडटी

विशेष अर्थात

app.use(expressJwt({ secret: jwtSecret}).unless({path:['/login']})); 

में एक्सप्रेस-जेडब्ल्यूटी विन्यास रास्ता दिखाता है।

सवाल यह है कि: मैं लॉगिन साइटों के लिए उपयोग करने के लिए कई साइट्स पासपोर्ट.जेएस के माध्यम से आसानी से पहुंचा जा सकता हूं। पासपोर्ट-जेडटी हुड के तहत jsonwebtokens.js मॉड्यूल का उपयोग करने लगता है, तो क्या उसी लचीलेपन के साथ पासपोर्ट-जेडटी को कॉन्फ़िगर करने का एक तरीका है जिसे व्यक्तिगत रूप से jsonwebtokens.js और express-jwt.js से प्राप्त किया जा सकता है?

उत्तर

2

हां वहाँ है। पासपोर्ट में कई विन्यास हैं, यह रणनीतियों की शर्तों क्या है। https://github.com/themikenicholson/passport-jwt

यहाँ एक API सर्वर के साथ उपयोग करने के लिए एक सभ्य गाइड है: http://slatepeak.com/guides/building-a-software-as-a-service-saas-startup-pt-2/

यहाँ ग्रहण एक बुनियादी एक्सप्रेस एप्लिकेशन config के साथ एक उदाहरण है उन में से एक पासपोर्ट जेडब्ल्यूटी है।

// init express app as normal.. 
var app = express(); 
// dependancies 
var passport = require('passport'); 
var jwt = require('jwt-simple'); 
var User = require('path/to/your/db/model'); // eg. mongo 
// initialize passport 
app.use(passport.initialize()); 
app.use(passport.session()); 
// configure passport jwt strategy 
var JwtStrategy = require('passport-jwt').Strategy; 
module.exports = function(passport) { 
    // JSON Web Token Strategy 
    passport.use(new JwtStrategy({ secretOrKey: 'secret' }, function(jwt_payload, done) { 
    User.findOne({id: jwt_payload.id}, function(err, user) { 
     if (err) return done(err, false); 
     if (user) done(null, user); 
     else done(null, false); 
     }); 
    })); 
}; 
// now have an authentication route 
app.post('/admin/authenticate', function(req, res) { 
    User.findOne({ 
    email: req.body.email 
    }, function(err, user) { 
    // create jwt token 
    var token = jwt.encode(user, 'secret'); 
    if (err) { 
     res.send({success: false, msg: 'error'}); 
    } else { 
     res.json({success: true, token: 'JWT ' + token}); 
    } 
    }); 
}); 
// finally require passport strategy to secure certain routes.. 
app.get('/admin/getsomedata', passport.authenticate('jwt', {session: false}), successFunction); 

आपके प्रश्न का उत्तर करने के लिए - मेरे अनुभव में हाँ मैं, यह एक्सप्रेस-जेडब्ल्यूटी की तरह एक बहुत कुछ लचीलापन प्रदान करता है लगता है कि अगर अधिक नहीं है, और अपने मुख्य कोड से आसानी से निकाला जा सकता है।