Büyük resim
HTTP durumsuzdur: durumu nerede tutarız?
Sunucu seni bir önceki istekten hatırlamaz. Hatırlıyormuş gibi yapmanın yolları ve bedelleri.
Kavramı anlayalım
HTTP’de her istek kendi başınadır: sunucu, aynı kullanıcının bir saniye önce ne yaptığını protokol düzeyinde bilmez. Oturum açmış olmak, sepet veya dil tercihi gibi bilgiler bu yüzden her istekte bir şekilde yeniden taşınmalı ya da bir yerde saklanıp bir anahtarla bulunmalıdır.
Üç temel yol vardır. Çerezler: tarayıcı sunucunun verdiği küçük değerleri saklar ve her istekte otomatik gönderir. Token’lar: istemci bir kimlik belgesini (ör. JWT) Authorization başlığında taşır. Sunucu tarafı oturum: çerezde yalnız rastgele bir oturum kimliği durur, asıl veri sunucuda (bellek, Redis, veritabanı) tutulur.
Durumsuzluk ölçeklenmeyi kolaylaştırır: her istek bağımsız olduğu için yük dengeleyici onu herhangi bir sunucuya gönderebilir. Bunun koşulu, durumun tek bir sunucunun belleğinde kalmamasıdır. Bellekte oturum tutan bir uygulama ikinci sunucu eklendiğinde kullanıcıları rastgele ‘çıkış yapmış’ gösterir.
Oturum tasarımı, ölçeklenmeyi, güvenliği ve çıkış yapma davranışını belirler.
Kullanıcı durumunu tek sunucunun belleğinde tutup sonra yatayda ölçeklemeye çalışmak.
Aynı konu. Üç farklı derinlik.
Set-Cookie: ataberk-theme=dark; Path=/; Max-Age=31536000
// sonraki her istekte:
Cookie: ataberk-theme=darkBu sitenin tema tercihi bir çerezle her isteğe taşınır.
Bu sayfa gerçek bir sunucuya veya veritabanına bağlanmaz. Kod örnekleri .NET 8, Next.js ve SQL Server için temsilîdir; süreler simülasyondaki örnek değerlerdir, ölçüm değildir. Örnekleri yalnız kendi geliştirme ortamında dene; gerçek bağlantı dizesi, token veya parola paylaşma.
Önce kendin dene.
Uygulamana ikinci bir sunucu ekledin ve kullanıcılar her birkaç tıklamada bir giriş ekranına düşüyor. İlk kontrol edeceğin şey nedir?
Çözümü ve açıklamasını göster
Oturum veya kimlik doğrulama anahtarlarının sunucuya özel bellekte tutulup tutulmadığı:
- in-memory session
- sunucuya özgü Data Protection anahtarlarıİstekler farklı sunuculara düştüğünde, durumu veya çerez şifreleme anahtarlarını paylaşmayan sunucu kullanıcıyı tanımaz.