La soluzione migliore che ho trovato per questo problema sarebbe stata reindirizzare alla pagina prevista con un cookie che contiene il JWT.
Usando res.json
invierebbe solo una risposta json e non reindirizzerebbe. Ecco perché l'altra risposta suggerita qui non risolverebbe il problema che ho riscontrato.
Quindi la mia soluzione sarebbe:
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
});
Dopo il reindirizzamento, puoi leggere il cookie in modo sicuro e utilizzare quel JWT come previsto. (puoi effettivamente leggere il cookie ad ogni caricamento della pagina, per verificare se un utente è loggato)
Come accennato in precedenza, è possibile reindirizzare con JWT come parametro di query, ma è molto pericoloso. L'utilizzo di un cookie è più sicuro e ci sono ancora soluzioni di sicurezza che puoi utilizzare per renderlo ancora più sicuro, a differenza di un parametro di query che è chiaramente insicuro.