MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Passeport Facebook avec JWT

La meilleure solution que j'ai trouvée pour ce problème serait de rediriger vers la page attendue avec un cookie contenant le JWT.

Utilisation de res.json n'enverrait qu'une réponse json et ne redirigerait pas. C'est pourquoi l'autre réponse suggérée ici ne résoudrait pas le problème que j'ai rencontré.

Donc ma solution serait :

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

Après la redirection, vous pouvez lire le cookie en toute sécurité et utiliser ce JWT comme prévu. (vous pouvez en fait lire le cookie à chaque chargement de page, pour vérifier si un utilisateur est connecté)

Comme je l'ai mentionné précédemment, il est possible de rediriger avec le JWT en tant que paramètre de requête, mais c'est très dangereux. L'utilisation d'un cookie est plus sûre, et il existe encore des solutions de sécurité que vous pouvez utiliser pour le rendre encore plus sûr, contrairement à un paramètre de requête qui est clairement non sécurisé.