Sono interessato a come implementare OAuth in React usando popup ( window.open
).
Ad esempio ho:
mysite.com
- è qui che apro il popup.passport.mysite.com/oauth/authorize
- apparire.
La domanda principale è come creare una connessione tra window.open
(popup) e window.opener
(come è noto, window.opener è nullo a causa della sicurezza tra domini, quindi non possiamo più usarlo).
⇑
window.opener
viene rimosso ogni volta che si passa a un host diverso (per motivi di sicurezza), non è possibile aggirarlo. L'unica opzione dovrebbe essere quella di effettuare il pagamento in un frame, se possibile. Il documento principale deve rimanere sullo stesso host.
Schema:
Possibili soluzioni:
- Controllare una finestra aperta usando
setInterval
descritto qui . Utilizzo del cross-storage (non ne vale la pena imho).
Quindi qual è l'approccio migliore raccomandato nel 2019?
Wrapper for React - https://github.com/Ramshackle-Jamathon/react-oauth-popup
localStorage
, ma funziona solo per lo stesso dominio, quindi non funziona nelle mie condizioni
window.opener
dopo il reindirizzamento al nostro dominio, ma non è così
setInterval
potrebbe essere utilizzato come fallback per localStorage