Saya tertarik pada cara mengimplementasikan OAuth di Bereaksi menggunakan popup ( window.open
).
Misalnya saya punya:
mysite.com
- ini adalah tempat saya membuka popup.passport.mysite.com/oauth/authorize
- muncul.
Pertanyaan utamanya adalah bagaimana membuat koneksi antara window.open
(popup) dan window.opener
(seperti yang diketahui window.opener adalah null karena keamanan lintas-domain oleh karena itu kami tidak dapat menggunakannya lagi).
⇑
window.opener
dihapus setiap kali Anda menavigasi ke host yang berbeda (untuk alasan keamanan), tidak ada jalan lain. Satu-satunya opsi harus melakukan pembayaran dalam bingkai jika memungkinkan. Dokumen teratas harus tetap di host yang sama.
Skema:
Solusi yang memungkinkan:
- Periksa jendela yang terbuka menggunakan
setInterval
dijelaskan di sini . Menggunakan cross-storage (tidak layak dilakukan).
Jadi apa pendekatan terbaik yang direkomendasikan pada tahun 2019?
Wrapper untuk Bereaksi - https://github.com/Ramshackle-Jamathon/react-oauth-popup
localStorage
, tetapi hanya bekerja untuk domain yang sama sehingga tidak berfungsi dalam kondisi saya
window.opener
setelah mengarahkan kembali ke domain kami, tetapi ini tidak terjadi
setInterval
dapat digunakan sebagai fallback untuk penyimpanan lokal