Saya menulis aplikasi web di Angular di mana autentikasi ditangani oleh token JWT, yang berarti bahwa setiap permintaan memiliki header "Autentikasi" dengan semua informasi yang diperlukan.
Ini berfungsi dengan baik untuk panggilan REST, tetapi saya tidak mengerti bagaimana saya harus menangani tautan unduhan untuk file yang dihosting di backend (file berada di server yang sama tempat layanan web dihosting).
Saya tidak dapat menggunakan <a href='...'/>
tautan biasa karena mereka tidak akan membawa header apa pun dan autentikasi akan gagal. Sama untuk berbagai mantra window.open(...)
.
Beberapa solusi yang saya pikirkan:
- Buat tautan unduhan sementara yang tidak aman di server
- Teruskan informasi otentikasi sebagai parameter url dan tangani kasus secara manual
- Dapatkan data melalui XHR dan simpan sisi klien file.
Semua hal di atas kurang memuaskan.
1 adalah solusi yang saya gunakan sekarang. Saya tidak menyukainya karena dua alasan: pertama ini tidak ideal dari segi keamanan, kedua berfungsi tetapi memerlukan cukup banyak pekerjaan terutama di server: untuk mengunduh sesuatu saya perlu memanggil layanan yang menghasilkan "acak "url, menyimpannya di suatu tempat (mungkin di DB) untuk beberapa waktu, dan mengembalikannya ke klien. Klien mendapatkan url, dan menggunakan window.open atau serupa dengannya. Saat diminta, url baru harus memeriksa apakah masih valid, lalu mengembalikan datanya.
2 tampaknya setidaknya banyak pekerjaan.
3 tampaknya banyak pekerjaan, bahkan menggunakan perpustakaan yang tersedia, dan banyak masalah potensial. (Saya perlu menyediakan bilah status unduhan saya sendiri, memuat seluruh file dalam memori dan kemudian meminta pengguna untuk menyimpan file secara lokal).
Tugasnya tampaknya cukup mendasar, jadi saya bertanya-tanya apakah ada sesuatu yang lebih sederhana yang dapat saya gunakan.
Saya belum tentu mencari solusi "cara Angular". Javascript biasa akan baik-baik saja.