Giải pháp tốt nhất mà tôi tìm thấy cho vấn đề đó là chuyển hướng đến trang mong đợi bằng cookie chứa JWT.
Sử dụng res.json
sẽ chỉ gửi một phản hồi json và sẽ không chuyển hướng. Đó là lý do tại sao câu trả lời được đề xuất khác ở đây sẽ không giải quyết được vấn đề tôi gặp phải.
Vì vậy, giải pháp của tôi sẽ là:
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
});
Sau khi chuyển hướng, bạn có thể đọc cookie một cách an toàn và sử dụng JWT đó như mong đợi. (bạn thực sự có thể đọc cookie trên mỗi lần tải trang, để kiểm tra xem người dùng đã đăng nhập hay chưa)
Như tôi đã đề cập trước đây, có thể chuyển hướng với JWT dưới dạng tham số truy vấn, nhưng nó rất không an toàn. rõ ràng là không an toàn.