Setting up Identity Core
Setting up Identity Core

Core Projemizde Identity ayarlarını nasıl yapabiliriz ?

Projemizin Model klasoruna ya da farklı katmanlarda proje geliştiriyorsanız Entity katmanına bir class oluşturuyoruz benim oluşturduğum class ApplicationUser.cs.

Oluşturduğumuz classa ApplicationUser'ı implement ediyoruz. 

using Microsoft.AspNetCore.Identity;

Kütüphanesini kullanıyor.

    public class ApplicationUser : IdentityUser
    {

    }

Daha sonra ApplicationIdentityDbContext.cs adında bir class daha oluşturuyorum. Ben 3 katmanlı çalıştığım için Data/Entity/WebUI

Data katmanında Concrete / EfCore klasoru içerisine classı oluşturuyorum.

Class içeriği aşağıda ki gibidir.

    public class ApplicationIdentityDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationIdentityDbContext(DbContextOptions<ApplicationIdentityDbContext> 
            options): base (options)
        {

        }

    }

public class ApplicationIdentityDbContext : IdentityDbContext ile impliment ediyoruz. 

IdentityDbContext Generic tipte ve bizden <TUser> beklediği için  ApplicationUser'i referans olarak veriyoruz.

Daha sonra constructor ile (Ctor)  ApplicationIdentityDbContext 'i oluşturuyoruz

Kullandığı Kütüphane :  using Microsoft.AspNetCore.Identity.EntityFrameworkCore;

public ApplicationIdentityDbContext(DbContextOptions options): base (options)
{

}

Eğer projemiz de yoksa  ConnectionString tanımlamaları için ConfigrationFile (appsettings.json)'ı projemize ekliyoruz.

appsettings.json içerisinde bulunan ConnectionString örneği 

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "DefaultConnection": "Data Source=NRG\\SqlExpress;Database=BlogAppDb;Integrated Security=True"
  }
}

 

ConnetionString'i DefaultConnetion adıyla tanımladık.

Şimdi Startup.cs dosyasında ConfigureServices tagları arasında ConntectionString ve DbContext ile ilişkilendirmesini ve Identity ayarlarını ekleyeceğiz.

ConfigureServices Tagları arasına : 

//DbContext ile ConntectionString ilişikilendirmesini yapıyoruz.
services.AddDbContext<ApplicationIdentityDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"),
b =>b.MigrationsAssembly("BlogProject.WebUI")));


//Identity Ayarları
//using Microsoft.AspNetCore.Identity;
services.AddIdentity<ApplicationUser,IdentityRole>()
.AddEntityFrameworkStores<ApplicationIdentityDbContext>()
.AddDefaultTokenProviders();

Dikkat: Identity ilişkilendirmesi esnasında using Microsoft.AspNetCore.Identity; kütüphanesi yerine using Microsoft.AspNet.Identity; gelirse <,IdentityRole> hata verecektir. Kütüphanelere dikkat edin.

 

Ayrıca Startup.cs dosyasının içerisinde Configure tagları arasına UseAuthentication kimlik doğrulamayı aktif ediyoruz.

Configure takları arasına ; 

app.UseAuthentication();

 

Identity'i uygulamaya tanıttıktan sonra veritabanını oluşturuyoruz.
Bunu projenizin bulunduğu klasor yolunu görüntüle diyerek Cmd aracılığı ile ya da PM üzerinden yapabiliriz.

cmd üzerinde migration oluşturalım
//(dosyaların bulunduğu klasorun dizin kısmına cmd yazarak tam yolda cmd açılması sağlanır)

//cmd kodu
dotnet ef migrations add Initial_identity

//PM> kodu
Add-Migration Initial_identity

yukarıda ki kod ile Migration Initial_identity ismiyle eklenmiş olmalı. Eğer DbContext hatası alırsanız :

dotnet ef migrations add Initial_identity --context ApplicationIdentityDbContext

Migration oluşturulduktan sonra bekleyen migrationları çalıştırmak için 

//CMD 
dotnet ef migrations update Initial_Identity

//PM>
update-database

Migration tanımlamanızı yaptıktan sonra veritabanınızda tablolarınızı gördüyseniz, Identity alt yapısını sisteminize kurdunuz demektir.

Görüşmek dileğiyle.