De beste oplossing die ik voor dat probleem vond, zou zijn om door te verwijzen naar de verwachte pagina met een cookie die de JWT bevat.
res.json
gebruiken zou alleen een json-antwoord verzenden en niet omleiden. Daarom zou het andere voorgestelde antwoord hier het probleem dat ik tegenkwam niet oplossen.
Dus mijn oplossing zou zijn:
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
});
Na omleiding kunt u de cookie veilig lezen en die JWT gebruiken zoals verwacht. (u kunt de cookie daadwerkelijk lezen bij elke pagina die wordt geladen, om te controleren of een gebruiker is ingelogd)
Zoals ik eerder al zei, is het mogelijk om om te leiden met de JWT als een queryparam, maar het is erg onveilig. Het gebruik van een cookie is veiliger en er zijn nog steeds beveiligingsoplossingen die u kunt gebruiken om het nog veiliger te maken, in tegenstelling tot een queryparam die is duidelijk onveilig.