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:
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:
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.