Session, Cookie, Local Storage, Session Storage Kullanımı

Merhaba arkadaşlar, bugün sizlere kısa bir yazı içerisinde önemli bir konudan, data saklama yöntemlerinden olan Cookie, Session, Local Storage ve Session Storagedan bahsetmek istiyorum.

Hızlıca bunları açıklayarak birer örnek gösterip belirli avantaj ve dezavantajlardan bahsedeceğiz. Hadi başlayalım;

Session, cookie gibi data saklamaya yarar fakat cookie den büyük bir farkı vardır. Session da bilgiler server tarafında tutulur. Bu yüzden server da oluşabilecek problemlerde sessionlar da etkilenir. Bununla beraber sessionların yüksek trafikli durumlarda kullanılması tavsiye edilmez, çünkü sessionlar bellekte (in-memory) tutulduğu için yoğunlukla beraber belleğin şişmesine sebep olabilir.
Buna çözüm olarak alternatif yollar vardır. Örneğin session bilgilerini Redis üzerinde tutmak.
https://www.borakasmer.com/asp-net-core-mvc-bir-projede-session-bilgilerini-redisde-tutma/

.Net core da session kullanmak için farkı yöntemler vardır. Session kullanımını aktif ettikten sonra session bilgisi set ve get metotları ile yazılabilir. Client problemlerinden etkilenmez, server problemlerinden etkilenir. .Net Core ile beraber klasik session mantığına biraz daha farklı logicler eklenmiş saklama şekilleri değiştirilmiştir. Kafa karıştırmamak adına bu konuya girmeyeceğim fakat merak edenler araştırabilir.

Örnek kullanım;

Startup.cs içerisinde sessionı aktif edelim.

ConfigureServices altına
services.AddSession();
Configure altına
app.UseSession();
session bilgisi yazıp daha sonra bu bilgiyi okuyalım.
HttpContext.Session.SetString("UserName", "Enes Aysan"); --Yazma
HttpContext.Session.GetString("UserName"); --Okuma
SessionOrnek
Session Örnek
Cookie, en sık kullanılan storage yöntemlerinden biridir. Bilgiler client tarafında saklanır bu yüzden yük clientlardadır. Burada her client kendi cookie bilgisini tutar. Yani chrome da tutulan çerez bilgisi chrome özelindedir. Başka bir tarayıcıdan girildiğinde yeni bir çerez tanımlanması gerekir. Çerezler belirtilen sürelerde aktif olabilir yada kalıcı olmayan client kapandığında kaybolacak çerezler tanımlanabilir. Farklı çerez konfigurasyonları vardır. Bunları araştırarak sisteminize uygun çerez konfigurasyonunu ayarlamalısınız.
https://medium.com/@selcukusta/bir-vaka-i%CC%87ncelemesi-asp-net-coreun-cookie-i%CC%87le-i%CC%87mtihan%C4%B1-c9404b16a4d5
Kullanımı kolay ve yaygındır fakat yönetimini ve güvenlik tarafını iyi düşünmek gerekir. 5 dakika süresince client tarafında tutulacak bir cookie tanımlayarak bunu okuyalım.
CookieOptions cookieOptions = new CookieOptions();
cookieOptions.Expires = DateTime.Now.AddMinutes(5);
Response.Cookies.Append("UserNameCookie", "EnesAysan", cookieOptions);
Okumak için bir sonraki istekte request içerisinde key bilgisini vererek cookieyi alabiliriz.
var userNameCookie = Request.Cookies["UserNameCookie"];
Cookie Örnek
Local Storage, Local storage çerez mantığına (kalıcı çerez) benzer şekilde client tarafında tarayıcıda saklanır.  Yani yük yine istemci tarafında saklanır. Local storage yönetimini ve güvenlik tarafını iyi düşünmek gerekir. Local stroage da tutulan kayıtlar silinmediği sürece kalıcıdır. Yani tarayıcıyı kapatsanızda silmediğiniz sürece dataya ulaşılır.
Local storage içerisine javascript ile kaydımızı atalım ve okuyalım.
<script>
localStorage.setItem('UserNameLocalStorage','Enes Aysan'); --Yazma
localStorage.getItem('UserNameLocalStorage'); --Okuma       
localStorage.removeItem('UserNameLocalStorage'); --Kayıt Silme
localStorage.clear(); --Tüm verileri silme
</script>
Local Storage Örnek
Session Storage, Local storage ile hemen hemen aynıdır. En büyük farkı ise session storage bilgilerinin tarayıcı kapatıldığında kaybolmasıdır.
<script>
sessionStorage.setItem('UserNameSessionStorage','Enes Aysan'); --Yazma
sessionStorage.getItem('UserNameSessionStorage'); --Okuma       
sessionStorage.removeItem('UserNameSessionStorage'); --Kayıt Silme
sessionStorage.clear(); --Tüm verileri silme
</script>

Umarım faydalı olmuştur, kalın sağlıcakla…

Written By

Bir önceki günden daha iyi olmak için çalışarak kendimi geliştirmek, öğrendiklerim ve öğreneceklerim ile yazılım sektöründe büyük ölçekli ve uluslararası projelerde kendimden söz ettirmek istiyorum.

More From Author

You May Also Like

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir