2016-04-21 32 views
8

Node.js yazılımının geliştirilmesinde yeni bir görevdeyim ve şu an boş zamanımda bir evcil hayvan projesinde çalışıyorum.Pasaport facebook ve passport-jwt'ı karıştırmanın en iyi yolu nedir?

Şimdiye kadar JWT kimlik doğrulamasını, passport ve passport-jwt kullanarak oluşturdum ve tüm RESTful API'larımda kullanıyorum.

Şimdi bunu bir tür Facebook kimlik doğrulamasıyla karıştırmayı hala belirtmek istiyorum.

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); 

Ve aşağıdakileri yapın doğrulamak için:

Şu anda bu ben üreten ve jetonu elde ediyorum nasıl

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

kullanıcı kontrolör:

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

herkes iki stratejiyi karıştırmak için düzgün bir yol önerebilir? express-jwt kullanmalı mıyım? Express-jwt ve passport-jwt arasındaki fark nedir?

cevap

0

Şu anda jetonu son kullanıcıya geri gönderiyor gibi görünüyor. Bu müşteri tarafını nasıl kurtarıyorsun? Jsonwebtoken gibi basit bir JWT kitaplığı kullanmanızı ve belirteci bir httpOnly çerezi olarak ayarlamanızı öneririm. Şu anda localStorage'da kaydetiyorsanız, bir XSS saldırısına karşı daha savunmasız olabilirsiniz. veritabanınızda Eğer Facebook kullanıcı belirteci kaydedebilmek için https://gist.github.com/briancw/8c2021817c3bd34972e8e8deb6048a4f

0

Eğer yeni stratejiyle passport-jwt ne yaptığını gibi passport-facebook kullanabilir ve: İşte nasıl Şu anda ayarı işleme ve kullanıcı için bir JWT'yi kontrol ediyorum bir özü olduğunu jetonunuzu döndürün