Bir önceki projemiz KitapListesinde projenin oluşturulma aşamasında Individual Users Account şeklinde authentication modunu seçmemiştik. Bu projemizde ise seçtik, dolayısı ile projem oluşturulduğunda bir takım farklılıkları sizler de görmüşsünüzdür. Bunlardan bir tanesi Data Klasörü ve bunun altında oluşturulan Migrations klasörü ile birlikte ApplicationDbContext classı. Bu classın içinde herhangi bir model henüz oluşturmadığım için ek bir class yok. Ancak Indivvidual Users Account seçmem sebebi ile Migrations altında bazı migrationlar oluşturulmuş bile. Bunun içeriğini incelediğimizde ASP .NET Core için ilgili Identity tablolarının var olduğunu görebilirsiniz. Burada oluşturulan tablolar default olarak tanımlanmış, özellikleri ASP.NET Core Identity içinde default olarak önceden belirlenmiş tablolar. Ben bu tablolara müdahale edebilirim, yani yeni özellikler, kolonlar katabilirim. İleride göreceğiz zaten.
Dersin video versiyonunu da izlemenizi öneririm.
Bir diğer farklı klasör ise Areas klasörü ve içinde yer alan Identity klasörü ve onun da içinde yer alan Pages klasörü.
Şimdi appsetting.json dosyamıza gelelim. Burada tanımlanmış olup DefaultConnection içeriğinde projemin DataBase adı otomatik olarak proje isminden, önünde aspnet- ön ekinden ve proje adımın akabinde de ilgili proje oluşturulma tarihi ve saatini betimleyen bir takım harf ve rakamlardan oluşmuş. Ben burada düzenleme yapıyorum ve DataBase adımı sadece DbGursoyCNCBakim olarak bırakıyorum. Server adımı da düzenliyorum.
Appsettings.json:
{
"ConnectionStrings": {
"DefaultConnection": "Server=DESKTOP-FIUL2TU\\SQLEXPRESS;Database=DbGursoyCNCBakim;Trusted_Connection=True"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
Akabinde Package Manager Console üzerinde update-database diyorum. Ve veritabanım oluşturuluyor. SQL tarafına bakalım, mevcut olduğunu görüyoruz.
Projemizde çalışıyor. Çalıştırdığımızda görüleceği üzere Register ve Login butonalrımız mevcut. Login giriş panelini açıyor, Register kısmı ile yeni kayıt yapabiliyoruz. Tabi biz buraları değiştireceğiz.
Şimdi bizim SQL tarafında projemizin veritabanını incelediğimizde ASP.NET Core Identiy yapısına uygun şekilde birkaç tablom mevcut. Ancak ben henüz bu tabloları projemde Ares > Identiy altında göremiyorum. Normalde default olarak zaten olması gereken bu. Peki biz bunları nasıl görürüz ve üzerinde değişiklik yapmak istediğimizde nasıl yaparız sorusunun cevabı olarak şöyle yapalım. Bunun için Identity klasörüne sağ tıklıyoruz. Add seçip akabinde New Scaffolded Item seçiyoruz. Daha sonra çıkan Pence üzerinde sol taraftan Identiy seçiyoruz.
Orta kısımda zaten tek seçenek çıkıyor seçiyorum ve Identity seçip Add diyorum. Daha sonra çıkan pencerede hangi tablolar eklenecek şeklinde sormakta hepsini seçiyorum.


Bir sonraki adım için Layout seçmem gerekiyor, üstteki pencerenin üç nokta kısmına tıklıyorum ve Select Layout Page penceresinde _Layout sayfamın yerini gösteriyorum. Projemizde Pages > Shared altında yer alıyor. OK diyorum.

Tekrar geri döndüğümde seçtiğim _Layout.cshtml dokümanımın kodunu üstte belirtiyorum. Daha sonra bu pencerede Data Context Class alanında projem için otomatik tanımlanmış olan ApplicationDbContext seçiyorum.
Bunun akabinde bir ScaffoldingReadme.txt adında bir doküman otomatik oluşturuluyor.
Ek olarak Areas>Identiy>Pages altına baktığımızda Account şeklinde bir klasör yapısı kurulmuş olduğunu ve ilgili tüm Identity tablolarına ilişkin classlarında olduğunu görebiliriz.
Şimdi header ve footer alanında biraz düzenleme yapalım. _layout sayfaları ASP Web formlarda yer alan Master Page sayfalarının karşılığı aslında.
Burada header ve footer arka kısmını dark yapalım.
nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-dark bg-dark border-bottom box-shadow mb-3"
Burada yer alan Register ve Login yazıları rengini değiştirelim.
Bunu yaptıktan sonra Login ve Register butonlarım için _LoginPartial kısmına gidiyorum. Çünkü kodlarda görüleceği üzere Partial name tagi kullanılmış. Düzenlememiş yapıyorum. Darkları siliyorum.
_LoginPartial.cshtml Tüm Kodları:
@using Microsoft.AspNetCore.Identity
@inject SignInManager< IdentityUser > SignInManager
@inject UserManager< IdentityUser > UserManager
Buradan footer düzenleme kısmına gelelim.
_Layout.cshtml kısmına dönüyoruz. Kodlarımı düzenliyorum, tüm kodlar:
< !DOCTYPE html >
< html lang="en">
< head >
@ViewData["Title"] - Gursoy CNC Bakim Teknik Servis
< /head >
< body >
< header >
< /header >
@RenderBody()
< footer class="border-top footer text-white-50" style="background-color:#343a40">
© 2020 - GursoyCNCBakim - Gizlilik
< /footer >
@RenderSection("Scripts", required: false)
< /body >
< /html >
Kodları en iyi şekilde takip edebilmek için video dersi izlemenizi öneririm. Şimdilik bu kadar bir sonraki derste görüşmek üzere.