ฉันสนใจที่จะใช้ OAuth ใน React โดยใช้ป๊อปอัพ ( window.open
)
เช่นฉันมี:
mysite.com
- นี่คือที่ฉันเปิดป๊อปอัพpassport.mysite.com/oauth/authorize
- ป๊อปอัพ.
คำถามหลักคือวิธีการสร้างการเชื่อมต่อระหว่างwindow.open
(ป๊อปอัพ) และwindow.opener
(เนื่องจากเป็นที่รู้จักกันว่า window.opener นั้นเป็นโมฆะเนื่องจากความปลอดภัยข้ามโดเมนดังนั้นเราจึงไม่สามารถใช้งานได้อีกต่อไป)
⇑
window.opener
จะถูกลบเมื่อใดก็ตามที่คุณนำทางไปยังโฮสต์อื่น (เพื่อเหตุผลด้านความปลอดภัย) ไม่มีวิธีแก้ไข ตัวเลือกเดียวควรทำการชำระเงินในเฟรมถ้าเป็นไปได้ เอกสารด้านบนต้องอยู่ในโฮสต์เดียวกัน
โครงการ:
การแก้ปัญหาที่เป็นไปได้:
- ตรวจสอบหน้าต่างที่เปิดใช้
setInterval
อธิบายไว้ที่นี่ ใช้cross-storage (ไม่คุ้มค่ากับมัน)
ดังนั้นวิธีที่ดีที่สุดที่แนะนำในปี 2019 คืออะไร?
แรปเปอร์สำหรับทำปฏิกิริยา - https://github.com/Ramshackle-Jamathon/react-oauth-popup
localStorage
แต่มันใช้งานได้กับโดเมนเดียวกันเท่านั้นดังนั้นมันจึงใช้งานไม่ได้ในสภาพของฉัน
window.opener
หลังจากเปลี่ยนเส้นทางกลับไปที่โดเมนของเรา แต่นี่ไม่ใช่กรณี
setInterval
สามารถใช้เป็นทางเลือกสำหรับ localStorage