.Net Core Cookie Ayarları

Merhabalar, bu yazımda .Net Core da Cookie Ayarlarını yapacağız. Cookie nedir ne değildir gibi bilgileri bu yazıda anlatmayacağım. Burada direkt kod yapısından bahsedeceğim. Hadi başlayalım.

Açtığımız .Net Core projesinin Startup.cs classına geliyoruz. Gerekli ayarlamaları burada gerçekleştireceğiz.

 public void ConfigureServices(IServiceCollection services)
        {
          //Düzenlemeleri burada yapacağız.
        }

Direkt kodları paylaşacağım sonra kodları parça parça açıklayacağım.


 CookieBuilder cookieBuilder = new CookieBuilder();
      cookieBuilder.Name = "OmerFatihCanbolat";
      cookieBuilder.HttpOnly = false; 
      cookieBuilder.SameSite = SameSiteMode.Lax;
      cookieBuilder.SecurePolicy = CookieSecurePolicy.SameAsRequest;                                     

 services.ConfigureApplicationCookie(opts =>
            {
           opts.LoginPath = new PathString("/Home/Login");
           opts.Cookie = cookieBuilder;
           opts.SlidingExpiration = true;
           opts.ExpireTimeSpan = TimeSpan.FromMinutes(2000);
            });

İlk olarak CookieBuilder classından bir nesne oluşturuyoruz. İçindeki propertyleri dolduracağız sırayla.


  • cookieBuilder.Name = “OmerFatihCanbolat”;

Name burada oluşturulan cookie mekanizmasına verilen bir ad.


  • cookieBuilder.HttpOnly = false;

HttpOnly ise bize client taraflı bir isteği kabul edip etmeyeceğini soruyor. False dersek sadece http isteği üzerinden gelen istekleri kabul eder.


  • cookieBuilder.SameSite = SameSiteMode.Lax;

Burada SameSiteMode un 3 farklı tipi var. Bunlar Lax,None,Strict.

Default olarak “Lax” geliyor. Peki bu nedir? Çok kısaca istek(request) yönetimidir.

Lax = Kısıtlamalı izindir. Başka sitelerde dahil olmak üzere server a istekte bulunabilir.

Strict = Bu mod başka sitelerden gelen istekleri engelliyor. Daha çok banka gibi güvenliğin önemli olduğu yerlerde kullanılır.

None = İsminden anlaşılacağı üzere hiçbir kısıtlama yok her türlü gelen isteği atabilir.


  • cookieBuilder.SecurePolicy = CookieSecurePolicy.SameAsRequest;

Burada da kullanıcı login olduktan sonraki http/https istek ayrımını kontrol ediyoruz. 3 farklı tipi var. Bunlar Always, SameAsRequest, None

Always = Cookiye istek sadece “https” üzerinden gelmişse server a gönderiyor.

SameAsRequest =http/https” fark etmiyor. Hangi türlü istek geldiyse o şekil de iletiyor.

None = Her iki istek türünü de “http” olarak gönderiyor.




  • opts.LoginPath = new PathString(“/Home/Login”);

Kullanıcı login olmadan bir sayfaya ulaşmaya çalışırsa gönderileceği sayfa adresini belirtiyoruz.


  • opts.Cookie = cookieBuilder;

Üstteki CookieBuilder sınıfından oluşturduğumuz cookieBuilder nesnesini veriyoruz.


  • opts.SlidingExpiration = true;

True olarak ayarlandığı zaman cookie için belirtilen ayakta kalma süresinin yarısına gelindiğinde bir istekte bulunulursa tekrardan cookie süresi baştan başlıyor.


  • opts.ExpireTimeSpan = TimeSpan.FromMinutes(2000);

Oluşturulan cookie yapısının ne kadar bir süre ayakta kalabileceğini belirliyoruz ister dakika ister gün bu size kalmış.


Evet cookie yapısını oluşturduk. Genel olarak yapı bu şekilde. İhtiyaçlarınıza göre düzenleyebilirsiniz.

Yazımın sonuna geldik. Bir sonraki yazımda görüşmek üzere. Sağlıcakla kalın.

Kaynak

https://docs.microsoft.com/tr-tr/aspnet/core/security/cookie-sharing?view=aspnetcore-3.1

Bir cevap yazın