Kimlik doğrulamasının bir JWT belirteci tarafından işlendiği Angular'da bir web uygulaması yazıyorum, bu da her isteğin gerekli tüm bilgileri içeren bir "Kimlik Doğrulama" başlığına sahip olduğu anlamına gelir.
Bu, REST çağrıları için iyi çalışıyor, ancak arka uçta barındırılan dosyalar için indirme bağlantılarını nasıl kullanmam gerektiğini anlamıyorum (dosyalar, web hizmetlerinin barındırıldığı aynı sunucuda bulunur).
<a href='...'/>
Herhangi bir başlık taşımadıkları ve kimlik doğrulama başarısız olacağı için normal bağlantıları kullanamıyorum . Çeşitli büyüler için de aynı window.open(...)
.
Düşündüğüm bazı çözümler:
- Sunucuda geçici olarak güvenli olmayan bir indirme bağlantısı oluşturun
- Kimlik doğrulama bilgilerini bir url parametresi olarak iletin ve durumu manuel olarak işleyin
- Verileri XHR aracılığıyla alın ve dosya istemcisi tarafını kaydedin.
Yukarıdakilerin tümü tatmin edici olmaktan daha azdır.
Şu anda kullandığım çözüm 1. İki nedenden dolayı hoşuma gitmiyor: birincisi güvenlik açısından ideal değil, ikincisi çalışıyor ancak özellikle sunucuda epeyce çalışma gerektiriyor: bir şeyi indirmek için yeni bir "rastgele" üreten bir hizmeti aramam gerekiyor "url, bir yerde (muhtemelen DB'de) bir süre saklar ve istemciye geri gönderir. İstemci url'yi alır ve onunla window.open veya benzerini kullanır. İstendiğinde, yeni url hala geçerli olup olmadığını kontrol etmeli ve ardından verileri döndürmelidir.
2 en az iş kadar görünüyor.
3, mevcut kitaplıkları kullanmak ve birçok olası sorunu kullanmak bile çok çalışma gerektiriyor gibi görünüyor. (Kendi indirme durum çubuğumu sağlamam, tüm dosyayı belleğe yüklemem ve ardından kullanıcıdan dosyayı yerel olarak kaydetmesini istemem gerekir).
Görev oldukça basit görünüyor, bu yüzden kullanabileceğim çok daha basit bir şey olup olmadığını merak ediyorum.
"Açısal yol" için mutlaka bir çözüm aramıyorum. Normal Javascript iyi olur.