sql >> Base de Datos >  >> NoSQL >> MongoDB

Facebook-pasaporte con JWT

La mejor solución que encontré para ese problema sería redirigir a la página esperada con una cookie que contenga el JWT.

Usando res.json solo enviaría una respuesta json y no redirigiría. Es por eso que la otra respuesta sugerida aquí no resolvería el problema que encontré.

Entonces mi solución sería:

app.get('/auth/facebook/callback',
passport.authenticate('facebook', {
    session: false,
    successRedirect : '/',
    failureRedirect : '/'
}), (req, res) => {
    var token = req.user.jwtoken;
    res.cookie('auth', token); // Choose whatever name you'd like for that cookie, 
    res.redirect('http://localhost:3000'); // OR whatever page you want to redirect to with that cookie
});

Después de la redirección, puede leer la cookie de forma segura y usar ese JWT como se esperaba. (de hecho, puede leer la cookie en cada carga de página, para verificar si un usuario ha iniciado sesión)

Como mencioné antes, es posible redirigir con el JWT como un parámetro de consulta, pero es muy inseguro. Usar una cookie es más seguro y todavía hay soluciones de seguridad que puede usar para hacerlo aún más seguro, a diferencia de un parámetro de consulta que es claramente inseguro.