ฉันกำลังเขียนเว็บแอปใน Angular ที่มีการจัดการการตรวจสอบความถูกต้องโดยโทเค็น JWT ซึ่งหมายความว่าทุกคำขอจะมีส่วนหัว "การตรวจสอบสิทธิ์" พร้อมข้อมูลที่จำเป็นทั้งหมด
ใช้งานได้ดีสำหรับการโทร REST แต่ฉันไม่เข้าใจว่าฉันควรจัดการลิงก์ดาวน์โหลดสำหรับไฟล์ที่โฮสต์บนแบ็กเอนด์อย่างไร (ไฟล์อยู่บนเซิร์ฟเวอร์เดียวกันกับที่โฮสต์บริการเว็บ)
ฉันไม่สามารถใช้<a href='...'/>
ลิงก์ปกติได้เนื่องจากไม่มีส่วนหัวใด ๆ และการตรวจสอบความถูกต้องจะล้มเหลว window.open(...)
เหมือนกันสำหรับคาถาต่างๆของ
วิธีแก้ปัญหาบางอย่างที่ฉันนึกถึง:
- สร้างลิงค์ดาวน์โหลดชั่วคราวที่ไม่ปลอดภัยบนเซิร์ฟเวอร์
- ส่งผ่านข้อมูลการพิสูจน์ตัวตนเป็นพารามิเตอร์ url และจัดการเคสด้วยตนเอง
- รับข้อมูลผ่าน XHR และบันทึกไฟล์ฝั่งไคลเอ็นต์
ทั้งหมดที่กล่าวมาน้อยกว่าที่น่าพอใจ
1 เป็นวิธีแก้ปัญหาที่ฉันใช้อยู่ตอนนี้ ฉันไม่ชอบด้วยเหตุผลสองประการประการแรกมันไม่เหมาะกับการรักษาความปลอดภัยอย่างที่สองมันใช้งานได้ แต่ต้องใช้งานค่อนข้างมากโดยเฉพาะบนเซิร์ฟเวอร์: เพื่อดาวน์โหลดสิ่งที่ฉันต้องเรียกใช้บริการที่สร้าง "สุ่ม" ใหม่ "url เก็บไว้ที่ใดที่หนึ่ง (อาจอยู่ในฐานข้อมูล) สักระยะหนึ่งแล้วส่งคืนให้กับลูกค้า ไคลเอนต์ได้รับ url และใช้ window.open หรือคล้ายกับมัน เมื่อได้รับการร้องขอ url ใหม่ควรตรวจสอบว่ายังถูกต้องหรือไม่จากนั้นจึงส่งคืนข้อมูล
2 ดูเหมือนว่าอย่างน้อยก็ทำงานได้มาก
3 ดูเหมือนจะใช้งานได้มากแม้กระทั่งการใช้ไลบรารีที่มีอยู่และปัญหาที่อาจเกิดขึ้นมากมาย (ฉันจะต้องให้แถบสถานะการดาวน์โหลดของฉันเองโหลดทั้งไฟล์ในหน่วยความจำแล้วขอให้ผู้ใช้บันทึกไฟล์ในเครื่อง)
แม้ว่างานนี้จะค่อนข้างธรรมดาดังนั้นฉันจึงสงสัยว่ามีอะไรที่ง่ายกว่านี้ที่ฉันสามารถใช้ได้หรือไม่
ฉันไม่จำเป็นต้องมองหาวิธีแก้ปัญหา "the Angular way" Javascript ธรรมดาก็ใช้ได้