BuildingBlocks.FileServer, fiziksel disk üzerindeki dosyaları HTTP üzerinden sunar. İki çalışma modu vardır: korumasız PhysicalFileProvider veya kimlik kontrolü yapan PrivateMaviDepoFileProvider. İkinci modda her dosya/dizin erişiminden önce IFileServerUserContext.IsAuthenticated() çağrılır; yetkisiz istek 404 (var olmuyormuş gibi) döner.
DI ve middleware
| Metot | Tip | Amaç |
|---|---|---|
AddMaviDepoFileServer(configuration) | IServiceCollection | FileProviderOptions’ı FileProvider bölümüne bind eder |
UseMaviDepoFileServer(configuration) | IApplicationBuilder | Provider’ı seçer ve UseFileServer (+ opsiyonel UseDirectoryBrowser) kurar |
Konfigürasyon — FileProviderOptions
FileProvider bölümüne bind edilir.
| Üye | Tip | Açıklama |
|---|---|---|
Root | string | Sunulacak dosyaların kök dizini (ör. /var/files, C:\files) |
RequestPath | string | URL ön eki — /files |
EnableDirectoryBrowsing | bool | Dizin listeleme (sıralı HTML formatter ile) |
EnableAuth (config anahtarı) | bool | true → PrivateMaviDepoFileProvider, false → PhysicalFileProvider |
UseMaviDepoFileServer, auth seçimini config’ten okunan FileProvider:EnableAuth anahtarıyla yapar. POCO sınıfında bu alan tarihsel olarak EnableAuthorization adını taşır; etkin olan değer middleware’in okuduğu FileProvider:EnableAuth anahtarıdır.PrivateMaviDepoFileProvider — auth-aware sunum
PhysicalFileProvider’ı genişletir. GetFileInfo/GetDirectoryContents çağrılarında bir scope açıp IFileServerUserContext çözer:
IFileServerUserContext uygulama tarafından implement edilir: KullaniciId, TenantId, Eposta, Token, IsAuthenticated().
Keycloak query-param token
<img src> / <a href> gibi tarayıcı kaynaklı isteklere Authorization header eklenemez. Bu yüzden Keycloak JWT şeması /files (ve /hubs) yolları için token’ı query string’den okuyacak şekilde yapılandırılmıştır:
Kullanım
İlgili
Keycloak
JWT şeması ve query-param token okuma.
Kimlik doğrulama
Şema seçimi ve yetkilendirme.
Docker (prod)
nginx-proxy arkasında dosya yolları.
API
Statik içerik ve controller pipeline’ı.