Zincir
Her Command/Query, Handler’a ulaşmadan önce birIPipelineBehavior zincirinden geçer. Zincir, MediatR’da kayıt sırasıyla çalışır. DependencyInjection.cs:
LoggingPipelineBehavior kayıtlı ama yorum satırına alınmıştır (disabled). Etkinleştirmek için ilgili satırın yorumunu kaldırmak yeterlidir; sıradaki konumu (Authorization’dan sonra) korunur.1. ExceptionPipelineBehavior
En dış halka. Bilinen exception’ları olduğu gibi yukarı geçirir (throw;), bilinmeyenleri UndefinedApplicationException’a sarar. IBusMessage (Hangfire/bus mesajları) sarılmaz — DLQ/retry kararı altyapıya bırakılır.
2. AuthorizationPipelineBehavior
RBAC ve multi-tenant erişim kontrolü. YalnızcaIRequirePermissions veya IRequireTenantAccess uygulayan request’lerde devreye girer; aksi halde doğrudan next() çağrılır. Kullanıcı bağlamını ICurrentUserService (BuildingBlocks.Keycloak) üzerinden okur.
ForbiddenException fırlatılır; bu da HTTP 403’e dönüşür.
3. ValidationPipelineBehavior
İlgili request için kayıtlı tümIValidator<TRequest>’ları paralel çalıştırır. IBusMessage’ı atlar ve hiç validator yoksa devam eder. Hata varsa tek bir ValidationException (tüm failures ile) fırlatılır.
ValidationException API tarafında HTTP 422 + alan bazlı errors listesine çevrilir. Validator’ların nasıl yazıldığı için bkz. Validation & Mapping.4. PermissionPipelineBehavior
IRequirePermission (tekil) uygulayan request’lerde JWT permissions claim’ini doğrudan IHttpContextAccessor üzerinden okur. Bu, API’deki [RequirePermission] attribute’una ek bir defense-in-depth katmanıdır — özellikle Hangfire job’larından veya event handler’lardan tetiklenen command’lerde değerlidir.
Sonraki adımlar
Authorization marker'ları
IRequirePermissions, IRequireTenantAccess, IRequirePermission detayları.
Validation & Mapping
FluentValidation custom kuralları ve AutoMapper.
Command / Query deseni
Behavior’lardan geçen gerçek handler örnekleri.
Güvenlik
Çift JWT, RBAC ve token doğrulama mimarisi.