← Back to Posts

.NET Core Identity Kullanımı

.Net Core Identity Nedir


.Net Core Indetity, geliştirdiğimiz uygulamaya kayıt olma, kimlik doğrulama (Authentication), yetkilendirme(Authorization) gibi işlevleri kazandıran ve bu bilgileri MSSQL, PostgreSQL, MySQL gibi veritabanları saklayan bir üyelik sistemidir. Kullanıcılar isterse 3. taraf sistemler üzerinden de kayıt olup kimlik doğrulaması yapabilirler. (Facebook, Google, Twitter vb.)


.Net Core Identity Nasıl Kullanılır


İlk olarak aşağıdaki komut ile bir .NET Core MVC projesi oluşturuyoruz.

dotnet new mvc --name IdentityApp

Gerekli paketlerin kurulumu


Daha sonra .NET Core Identity'i projemizde kullanabilmemiz için gerekli olan Nuget paketlerini ekliyoruz.

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design

dotnet add package Microsoft.EntityFrameworkCore.Design

dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore

dotnet add package Microsoft.AspNetCore.Identity.UI

dotnet add package Microsoft.EntityFrameworkCore.SqlServer

dotnet add package Microsoft.EntityFrameworkCore.Tools

Nuget paketlerini ekledikten sonra proje dosyamızın görünümü


.NET Core Identity ile hazır olarak gelen Account Register - Account Login vb. sayfaları projemiz içerisinde oluşturmak ve düzenleme yapmak için ihtiyaç duyacağımız CodeGenerator aracını global olarak kuruyoruz.

dotnet tool install -g dotnet-aspnet-codegenerator

Daha sonra Identity ile hazır olarak gelen sayfaları projemizin okuyabilmesi için useDefaultUI komutunu çalıştırıyoruz.

dotnet aspnet-codegenerator identity --useDefaultUI


Veritabanı bağlantısı ve Startup dosyasının düzenlenmesi


useDefaultUI komutunu kullandıktan sonra appsettings.json içerisinde ConnectionString oluşturulduğunu görüyoruz.

Veritabanı olarak PostgreSQL kullanacağımız için ConnectionString'i değiştirmemiz gerekiyor



Sonrasında PostgreSQL kullanabilmemiz için gerekli olan Nuget paketini kuruyoruz.

dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL

Paket kurulumundan sonra Startup.cs içindeki ConfigureServices ve Configure metoduna bazı eklemeler yapmamız gerekiyor.

ConfigureService

services.AddDbContext<IdentityAppIdentityDbContext>(options => options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection")));

services.AddDefaultIdentity<IdentityUser>().AddEntityFrameworkStores<IdentityAppIdentityDbContext>();

services.AddRazorPages();

Configure

app.UseAuthentication();

endpoints.MapRazorPages();

Startup.cs dosyasının görünümü


Startup.cs içerisinde veritabanı bağlantısı için gerekli eklemeleri yaptıktan sonra Identity'e özel olan IdentityHostingStartup.cs dosyasını projemiz geneli için tek bir veritabanı kullanacağımız için siliyoruz.




Sonrasında migration komutlarını kullanarak veritabınımızı oluşturuyoruz.

dotnet ef migrations add CreateIdentityAppDb

dotnet ef database update

.NET Core Identity tarafından oluşturulan tablolar




Identity sayfalarını kullanma ve düzenleme


Register ve Login sayfalarına ulaşabilmek için Views/Shared/_Layout.cshtml dosyamıza <partial name="_LoginPartial"/> satırını ekliyoruz.



Sonrasında dotnet run komutu ile projemizi 5001 portu üzerinden çalıştırıyoruz.



localhost:5001/Identity/Account/Login adresi üzerinden Login sayfasında ulaşabiliyoruz fakat sayfayı düzenlemek için projemiz içerisinde Login sayfasının kodlarını göremiyoruz. Bunun için aspnet-codegenerator aracını dotnet komutu ile beraber çalıştırıp düzenlemek istediğimiz sayfaların kodlarını projemizde oluşturmamız gerekiyor.


dotnet aspnet-codegenerator identity --listFiles

Komutu ile projemize ekleyebileceğimiz bütün dosyaları listeleyebiliriz.


Projemize ekleyebileceğimiz dosyalar.


Aşağıdaki komutu kullanarak düzenlemek istediğimiz sayfaları projemize ekliyoruz.

dotnet aspnet-codegenerator identity --files "Account.Register;Account.Login;Account.RegisterConfirmation"

Artık Login sayfamızın kodlarını düzenleyebiliyoruz


Bir sonraki makelede Identity için oluşturulan veritabanı tabloları üzerinde ihtiyacımıza göre nasıl düzenleme yapabileceğimizden bahsedeceğiz.