Asp.Net Core Identity Özelleştirme

Asp.Net Core da Identity tablo ve alan isimlerini değiştirmek ve yeni alanlar ekleme işlemlerinin nasıl yapıldığını göreceğiz.

Boş bir Asp.Net Core 2.2 Projesi açalım.




















Model klasörü ekleyelim ve içine aşağıdaki resimdeki sınıflarımızı oluşturalım.



Oluşturduğumuz sınıfların içlerini aşağıdaki gibi düzenleyelim.

ApplicationUser sınıfına Address isimli yeni bir alan ekleyerek özelleştiriyoruz.



public class ApplicationUser:IdentityUser<string>
{
    public string Address { get; set; }  // Yeni Address alanı ekliyoruz.
}


public class ApplicationRole:IdentityRole<string>

{
}


public class ApplicationUserClaim : IdentityUserClaim<string>
{
}


public class ApplicationUserRole:IdentityUserRole<string>
{
}


public class ApplicationUserLogin:IdentityUserLogin<string>
{
}


public class ApplicationRoleClaim:IdentityRoleClaim<string>
{
}


public class ApplicationUserToken:IdentityUserToken<string>
{
}


Şimdi Data adında klasör oluşturup içine DataContex oluşturalım.







































ApplicationDbContex Sınıfını düzenleyelim. Burada dikkat edilmesi gereken yer, 
ApplicationDbContext sınıfı IdentityDbContext sınıfını miras alırken düzenlemek istediğimiz tüm sınıfları ekliyoruz. Daha sonra OnModelCreating Metodunda tablo isimlerini ve bir kaç alan ismini değiştirelim.

public class ApplicationDbContext:IdentityDbContext<ApplicationUser,ApplicationRole,
             string,ApplicationUserClaim,ApplicationUserRole,ApplicationUserLogin,
             ApplicationRoleClaim,ApplicationUserToken>
{

   public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
              :base(options)
   {

   }
  
  protected override void OnModelCreating(ModelBuilder builder)
  {
          base.OnModelCreating(builder);
          builder.Entity<ApplicationUser>().ToTable("User", "identity")
          .Property(p=>p.Id).HasColumnName("UserId");
          builder.Entity<ApplicationRole>().ToTable("Role", "identity")
          .Property(p=>p.Id).HasColumnName("RolId");
          builder.Entity<ApplicationUserRole>().ToTable("UserRole", "identity");
          builder.Entity<ApplicationUserClaim>().ToTable("UserClaims", "identity");
          builder.Entity<ApplicationRoleClaim>().ToTable("RoleClaims", "identity");
          builder.Entity<ApplicationUserLogin>().ToTable("LoginData", "identity");
          builder.Entity<ApplicationUserToken>().ToTable("UserToken", "identity");           
  }
}



appsettings.json dosyasında ConnectionString oluşturalım.

  "ConnectionStrings": {
    "ApplicationDbContext": "data source=.; initial catalog=IdentityDB;
          integrated security=true;"
  },



  Startup.cs dosyasını düzenleyelim.

 public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }
        public IConfiguration Configuration { get; set; }

        public void ConfigureServices(IServiceCollection services)
        {             
             services.AddDbContext<ApplicationDbContext>(
             options=>options.UseSqlServer(Configuration.GetConnectionString("ApplicationDbContext")));
             services.AddIdentity<ApplicationUser, ApplicationRole>()                              
             .AddEntityFrameworkStores<ApplicationDbContext>().AddDefaultTokenProviders();
            services.AddMvc();
        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage();
                app.UseStatusCodePages();
            }
            app.UseAuthentication();
            app.UseMvc();
        }

    }


code first migration işlemlerini yapalım.

PM> add-migration "Olustur"

PM> update-database


Veritabanı görüntüsü





User tablosunda değiştirilen ve eklenen alanlar





Başka bir yazıda görüşmek üzere.

Uygulama kodları AspNetCoreIdentityCustomize

Yorumlar

Yorum Gönder

Bu blogdaki popüler yayınlar

İç İçe Bağımlı DropdownListFor (Cascading)

Asp.Net Core View Components Kullanımı

Partial - RenderPartial - Html.Action - Html.RenderAction Kullanımı