.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.