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.