Solusi terbaik yang saya temukan untuk masalah itu adalah mengarahkan ulang ke halaman yang diharapkan dengan cookie yang menyimpan JWT.
Menggunakan res.json
hanya akan mengirim respons json dan tidak akan mengarahkan ulang. Itu sebabnya jawaban lain yang disarankan di sini tidak akan menyelesaikan masalah yang saya temui.
Jadi solusi saya adalah:
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
});
Setelah pengalihan, Anda dapat membaca cookie dengan aman dan menggunakan JWT itu seperti yang diharapkan. (Anda benar-benar dapat membaca cookie pada setiap pemuatan halaman, untuk memeriksa apakah pengguna telah masuk)
Seperti yang saya sebutkan sebelumnya, dimungkinkan untuk mengarahkan ulang dengan JWT sebagai parameter kueri, tetapi sangat tidak aman. Menggunakan cookie lebih aman, dan masih ada solusi keamanan yang dapat Anda gunakan untuk membuatnya lebih aman, tidak seperti parameter kueri yang jelas tidak aman.