Estou interessado em como implementar o OAuth no React usando popup ( window.open
).
Por exemplo, eu tenho:
mysite.com
- é aqui que eu abro o pop-up.passport.mysite.com/oauth/authorize
- Aparecer.
A principal questão é como criar conexão entre window.open
(pop-up) e window.opener
(como é conhecido o window.opener é nulo devido à segurança entre domínios, portanto, não podemos mais usá-lo).
⇑
window.opener
é removido sempre que você navega para um host diferente (por motivos de segurança), não há como contorná-lo. A única opção deve ser o pagamento em um quadro, se possível. O documento principal precisa permanecer no mesmo host.
Esquema:
Soluções possíveis:
- Verifique uma janela aberta usando o
setInterval
descrito aqui . Usando armazenamento cruzado (não vale a pena imho).
Então, qual é a melhor abordagem recomendada em 2019?
Wrapper para React - https://github.com/Ramshackle-Jamathon/react-oauth-popup
javascript
reactjs
oauth
popup
authorization
Arthur
fonte
fonte
setInterval
poderia ser usado como alternativa para localStoragelocalStorage
, mas ele só funciona para o mesmo domínio para que ele não funciona na minha condiçãowindow.opener
após redirecionando de volta para o nosso domínio, mas este não é o casoRespostas:
Sugerido por Khanh TO . Pop-up OAuth com localStorage. Baseado em react-oauth-popup .
Esquema:
Código:
oauth-popup.tsx:
app.tsx
fonte
Uma vez, encontrei um problema no meu fluxo de login oauth com o bug window.open/window.opener no ms-edge
Meu fluxo antes deste problema foi
Meu fluxo após esse problema foi
fonte