2016-04-21 14 views
8

Sono una specie di novità nello sviluppo di Node.js e attualmente sto lavorando a un progetto per animali domestici nel mio tempo libero.Qual è il modo migliore per mixare passport-facebook e passport-jwt?

Finora ho creato l'autenticazione JWT utilizzando passport e passport-jwt per la strategia e lo sto utilizzando in tutte le mie API RESTful.

Ora sto pensando di mescolare questo con una sorta di autenticazione di Facebook che ancora vuole rimanere con l'autenticazione di token.

Attualmente questo è come sto generazione e ottenere il token:

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

E per convalidare faccio la seguente:

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

user-Controller:

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

Chiunque può suggerire un modo pulito per mescolare le due strategie? dovrei usare express-jwt? Qual è la differenza tra express-jwt e passport-jwt?

risposta

0

Sembra che attualmente si invii il token all'utente finale. Come stai salvando quella parte del cliente? Ti consigliamo di utilizzare una semplice libreria JWT come jsonwebtoken e di impostare il token come cookie httpOnly. Se lo stai salvando attualmente in localStorage potresti essere più vulnerabile a un attacco XSS. Qui è una sostanza con il modo Attualmente sto maneggiando impostazione e il controllo di una JWT per un utente: https://gist.github.com/briancw/8c2021817c3bd34972e8e8deb6048a4f

0

è possibile utilizzare passport-facebook come quello che hai fatto con passport-jwt con la nuova strategia in modo da poter salvare Facebook token utente nel database e restituisci il tuo gettone

Problemi correlati