Je suis intéressé par la façon d'implémenter OAuth dans React en utilisant popup ( window.open
).
Par exemple, j'ai:
mysite.com
- c'est là que j'ouvre le popup.passport.mysite.com/oauth/authorize
- apparaitre.
La question principale est de savoir comment créer une connexion entre window.open
(popup) et window.opener
(comme on le sait, window.opener est nul en raison de la sécurité entre domaines, nous ne pouvons donc plus l'utiliser).
⇑
window.opener
est supprimé chaque fois que vous accédez à un hôte différent (pour des raisons de sécurité), il n'y a aucun moyen de le contourner. La seule option devrait être d'effectuer le paiement dans un cadre si cela est possible. Le document supérieur doit rester sur le même hôte.
Schème:
Solutions possibles:
- Vérifiez une fenêtre ouverte en utilisant
setInterval
décrit ici . Utiliser le stockage croisé (ça ne vaut pas la peine à mon humble avis).
Quelle est donc la meilleure approche recommandée en 2019?
Wrapper pour React - https://github.com/Ramshackle-Jamathon/react-oauth-popup
setInterval
pourrait être utilisé comme solution de rechange pour localStoragelocalStorage
, mais cela ne fonctionne que pour le même domaine, donc cela ne fonctionne pas dans mon étatwindow.opener
après la redirection vers notre domaine, mais ce n'est pas le casRéponses:
Proposé par Khanh TO . Popup OAuth avec localStorage. Basé sur react-oauth-popup .
Schème:
Code:
oauth-popup.tsx:
app.tsx
la source
J'ai rencontré une fois un problème sur mon flux de connexion oauth avec le bug window.open/window.opener sur ms-edge
Mon flux avant ce problème était
Mon flux après ce problème était
la source