Yetkilendirme ve session
Doğrulanmış kimliği erişim kurallarına ve session yaşam döngüsüne bağlayın.
Authentication kimliği belirler; authorization bu kimliğin bir işlemi yapıp yapamayacağını kontrol eder. Session ise kimlik bilgisini istekler arasında taşıyan uygulama sözleşmesidir.
Rol ve scope kontrolü#
Authentication örneğindeki AdminGuard, önce principal’ın varlığına, sonra has_role("admin") sonucuna bakar. Action’da #[guard(AuthGuard, AdminGuard)] kullanarak doğrulamayı yetki kontrolünden önce çalıştırın.
Principal subject, role, scope ve claim verilerini taşır. Bu değerleri istemcinin serbestçe gönderebildiği header’lardan doğrulamadan üretmeyin. Kaynağı doğrulanmış credential veya server-side session olmalıdır.
Session middleware slotu#
session_middleware::<ApplicationSessionMiddleware>() uygulamanızın session hazırlama adımını global CSRF’den önce çalıştırır. En fazla bir session middleware kaydedilir.
AppBuilder::new("127.0.0.1:8080")
.session_middleware::<ApplicationSessionMiddleware>();ApplicationSessionMiddleware uygulamanızda HttpMiddleware uygulayan türdür; hazır bir Lily session store değildir.
Session akışı#
- Cookie’yi okuyun ve biçimini doğrulayın.
- Session store’dan oturumu yükleyip expiry/revoke durumunu denetleyin.
- Doğrulanmış principal’ı ve gerekiyorsa
CsrfSessionIddeğerini yayımlayın. next.run(exchange)ile akışı ilerletin.- Seçtiğiniz yenileme ve response cookie politikasını uygulayın.
Eksik veya geçersiz session’ın anonymous mı yoksa ret mi üreteceği endpoint politikanıza bağlıdır. Zorunlu kimlik kontrolünü action guard’ında koruyun.
Store ve refresh sorumluluğu#
Storage şeması, expiry, revoke ve refresh token rotation uygulamanıza aittir. Redis cache veya bir veritabanı bu store’un alt katmanı olabilir; crate’i eklemek kendiliğinden session yönetimi başlatmaz.
CSRF ile birlikte kullanma#
Session middleware doğrulanmış session ID’yi request-local binding’e koyabilir. Signed CSRF modunda session ID değişince yeni binding’le token rotate edin. Synchronizer modda önce eski binding’in token state’ini temizleyin, sonra session ID’yi değiştirip yeni token üretin. Tam kurulum CSRF sayfasındadır.
Bu sayfanın kaynakları v0.1.0
Anlatım, incelenen framework commit’ine dayanır.