Tüm Detaylarıyla AspNetCore.Identity Kütüphanesi : Kısıtlamalar— Part 4

Herkese selamlar, bugün ele alacağımız konu yine bir devam yazısı olacak. Identity makale serimizin bu dördüncü yazısında kullanıcı belirli bir sayıda hatalı giriş denemesinden sonra ne gibi kısıtlamalar uygulayabiliriz? konusunu ele alacağız.

Yazımıza devam etmeden önce konu bütünlüğünü kaybetmemeniz adına

makalelerini okuyarak devam etmenizi öneririm.

KISITLAMALAR

Login olurken PasswordSignInAsync() metotu içerisine lockoutOnFailure parametresini TRUE geçerek kod yazmaya başlıyoruz.

Öncelikle başlangıçta LockoutEnd ve AccessFailedCount kolonlarını inceleyerek başlayalım.

AccessFailedCount alanı bizim ilgili kullanıcı ile kaç defa hatalı giriş denemesinde bulunduğumuzun kaydını tutar. Her hatalı denemede +1 değer artışı sağlanır. Ve bu sayı varsayılan değer olan beşe ulaşınca kullanıcı bloklanır. AccessFailedCount alanı sıfırlanır ve LockoutEnd alanına ne kadar süre bloklanacağına dair bir kayıt oluşur.

Yukarıdaki kod bloğu sayesinde söz konusu kullanıcının kaç defa hatalı giriş denemesinde bulunduğunu yakalayabiliriz. Kullanıcı ile etkileşime girmek için kullanabiliriz.

Üç hatalı giriş denemesinden sonra karşılaşacağımız ekran yukarıdaki gibi olacaktır.

SignInResult sınıfı

SignInResult sınıfı içerisinde bulunan IsLockedOut property üzerinden hesabın kilitlenmiş olup olmadığı bilgisine erişebiliriz.

İlgili senaryo gerçekleşirse kullanıcıya hesabının kilitlendiği bilgisini kullanıcıya gösterelim.

Şimdide hangi tarihe kadar hesabımızın kilitlendiği bilgisine erişelim.

UserManager sınıfı içerisindeki GetLockoutEndDateAsync() metotu üzerinden hangi tarihe kadar kısıtlandığımız bilgisine erişebiliriz. Hadi sonucu da görelim.

Son olarak ta bu kısıtların varsayılan değerlerini nasıl değiştireceğimizi inceleyelim.

Her zaman olduğu gibi startup.cs içerisindeki ConfigureServices() metotu içerisine gidiyoruz.

DefaultLockoutTimeSpan değeri üzerinden hangi tarihe kadar kilitleneceğini, MaxFailedAccessAttempts değeri üzerinden de kullanıcının en fazla kaç defa hatalı giriş hakkına sahip olacağı bilgilerini ayarlayabiliriz.

Makalelerimizde bahsi geçen sınıfları inceleyerek daha farklı neler yapabileceğimiz üzerine fikir sahibi olabilsiniz.

Yukarıdaki işlemlerin türevlerini deneyerek birçok farklı senaryoda da kullanabileceğimizi farketmişsinizdir. Mesela uygunsuz yorum yapan kullanıcıların her defasında uyarılması ve sonrasında belirli bir kotadan sonra kullanıcının bloklanması senaryosunun da çok farklı bir senaryo olmadığını görebiliyoruz.

Daha birçok senaryoda da bu makalede bahsettiğimiz mantık üzerinden geliştirme yapabiliriz.

Bu makalemiz de buraya kadar.

Bir sonraki makalemize Hata yönetimi, Kullanıcı rollerinin yapılandırılması, Mail üzerinden kullanıcı doğrulaması gibi konular ile devam edeceğim.

Demo proje : https://github.com/mustafadikyar/MyUtilities

MyUtilities reposu altındaki Core.Identity projesi referans alınmıştır.

Software Developer