Asp .Net Identity Custom User Validation

Merhabalar, bu yazımda Asp .Net Identity user validationlarını özelleştireceğiz. Bunun için IUserValidator arayüzünü kullanacağız. Hemen başlayalım.

Projemize CustomValidation adlı bir klasör ekliyoruz. İçine CustomUserValidator.cs adlı bir class ekliyoruz. Bu class da gerekli ayarlamaları yapabilmek için IUserValidator interfaceini miras alıyoruz ve içine TUser olarak “AppUser” classını veriyoruz.

 public class CustomUserValidator : IUserValidator<AppUser>
    {
        public Task<IdentityResult> ValidateAsync(UserManager<AppUser> manager, AppUser user)
        {
            throw new NotImplementedException();
        }
}

Bu metodu ihtiyaca göre düzenleyeceğiz. Bu yazıda 1 örnek yapacağız.


  • Kullanıcı adının ilk karakteri sayısal ifade içeremez.
public class CustomUserValidator : IUserValidator<AppUser>
    {
        public Task<IdentityResult> ValidateAsync(UserManager<AppUser> manager, AppUser user)
        {
  List<IdentityError> errors = new List<IdentityError>();

            //kullanıcı adı sayısal karakterle başlamasın
  string[] Digits= new string[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };

            foreach (var item in Digits)
            {
                if (user.UserName[0].ToString()==item)
                {
                    errors.Add(new IdentityError()
                    {
  Code = "UserNameContainsFirstLetterDigitContains",
  Description="Kullanıcı adının ilk karakteri sayısal karakter içeremez"
                    });
                }
            }
            if (errors.Count() == 0)
            {
                return Task.FromResult(IdentityResult.Success);
            }
            else
            {
  return Task.FromResult(IdentityResult.Failed(errors.ToArray()));
            }
        }
    }

Peki şimdi bu validationı nasıl aktif edeceğiz. Onun için Startup.cs classına geliyoruz ve gerekli düzenlemeyi yapıyoruz.

public void ConfigureServices(IServiceCollection services)
       {
           //
           services.AddIdentity<AppUser, IdentityRole(). 
               AddUserValidator<CustomUserValidator>().
             AddEntityFrameworkStores<AppIdentityDbContext>().
          AddDefaultTokenProviders();
 
          //
       }

Eklediğimiz “AddUserValidator()” parçası yazılan validationların çalışmasını sağlıyor.

Evet bu yazımın sonuna geldik öğrenilen yapı ile dilediğiniz kontrolleri yapabilirsiniz. Bir sonraki yazımda görüşmek üzere. Sağlıcakla kalın.

Bir cevap yazın