lilydocs
HTTP APIWebSocketConsumer
İstek işleme2 dk okuma

Request-local state

Aynı istek içindeki bileşenler arasında veri ve doğrulanmış kimlik paylaşın.

Request-local state, middleware veya guard’ın hazırladığı veriyi action’a taşır. DI servis kapsamından farklıdır: bir servis kaydı değil, isteğe bağlı typed değer deposudur.

Değer yayımlama#

Önceden doğruladığınız uygulama verisini request’e ekleyin. Örneğin TenantContext uygulamanın kendi tipiyse:

Middleware veya guard içinde
request.local_mut().insert(tenant_context);

Action bunu Local<TenantContext> veya Option<Local<TenantContext>> ile alır. Bu bir owned clone’dur; büyük veri için Local<Arc<TenantContext>> kullanın.

Gerekli Local<T> bulunamazsa iç durum hatası oluşur. Yokluk olağansa Option seçin; güvenlik açısından zorunlu bir değeri opsiyonel yaparak kontrolü atlamayın.

Doğrulanmış principal#

Kimlik doğrulayıcı başarıyla tamamlandığında:

AuthGuard içinde
let principal = self.verifier.verify(request, cancellation).await?;
request.set_principal(principal);

Action’ın principal: Principal parametresi bu değeri okur. Principal::new veya set_principal kendi başına credential doğrulaması yapmaz. Subject, role, scope ve claim verilerinin kaynağı güvenilir verifier olmalıdır.

DI scope ve cleanup state#

Service<T> aktif DI scope’undan servis alır. Local<T> request içindeki değeri alır. İkisi aynı işi yapmaz.

Middleware anormal termination için saklanacak durum exchange.termination_state_mut() ile yazılır. Bu depo Request.local ile aynı değildir; ayrıntılar shutdown sayfasındadır.

Bu sayfanın kaynakları v0.1.0

Anlatım, incelenen framework commit’ine dayanır.

HIZLI BAŞLANGIÇ
Dokümantasyon
Kaynak kod