Open KevserAkbas opened 3 years ago
Ve artık site ASP.NET Identity ile yapılandırıldığına göre, onu kullanmaya başlama zamanı.
Sadece yapılandırmak artık pek çok mucize oluşturmayacak, değil mi?
Şimdi bir sonraki bölümde Authentication için nasıl destek ekleyebileceğimizi görelim.
Daha önce de belirtildiği gibi, ASP.NET Core 2.1'den beri, yapı iskelesine dayalı olarak ASP.NET Identity ile çalışmanın yeni bir yolu tanıtıldı.
Bu yaklaşım ASP.NET Core 3 ve ASP.NET Core 5 MVC için aynıdır ve bu nedenle burada kullanacağımız şey budur.
İskele desteği olmadan önce, temelde manuel bir yaklaşım izlememiz gerekiyordu.
Bu, genellikle Account Controller (hesap denetleyicisi) olarak adlandırılan bir denetleyici oluşturmayı ve manuel olarak görünümler oluşturmayı içerir.
Yani günlük kaydı, kayıt vb. İçin .cshtml dosyaları.
Şimdi, bu eski yaklaşım hala işe yararken ve aslında hiçbir şey onu kullanmaktan alıkoymayacak olsa da, iskele temelli yeni yaklaşım, burada MVC uygulamamız için kullanacağımız şeydir.
Şimdi, iskele aslında henüz ele almadığımız Razor Class Libraries (Razor Sınıf Kitaplıkları) adlı bir şeye dayanıyor.
Şimdi size işlerin nasıl çalıştığını göstermeden önce, bu Razor Sınıf Kitaplığı hakkında bir açıklama borçluyum, bu arada, ASP.NET Core 2.1'de de tanıtılan yeni bir kavram.
Razor Class Libraries kitaplıklardır, bu nedenle projelerdir ve bunları, genellikle ASP.NET Core uygulamasının kendisine yerleştireceğiniz öğeleri oraya koymak için kullanabiliriz.
Bu, görünümleri, sayfaları, denetleyicileri, görünüm bileşenlerini ve temelde, normalde doğrudan ASP.NET Core MVC uygulamasının kendisine ekleyeceğiniz tüm ASP.NET Core'a özgü işlevleri içerir.
Bu öğeleri bir kitaplığa yerleştirerek, tabii ki bunları, normal bir sınıf kitaplığında olduğu gibi birden çok uygulamada paketleyebilir ve yeniden kullanabiliriz.
Çok özel bir şey, bu kütüphanelerdeki öğelerin üzerine yazabilmemizdir. Bir Razor Sınıf Kitaplığına ana sayfa adlı bir görünüm eklediğinizi hayal edin.
Kitaplığa başvuran ASP.NET Core uygulamanız da aynı yolda home adlı bir görünüme sahipse, ASP.NET Core uygulamasının kendisindeki bir kitaplıktaki bir görünümü geçersiz kılar.
Bu, uygulamanıza kitaplıktaki öğeleri seçerek dahil etmenize olanak tanır.
Razor Sınıf Kitaplıkları, Visual Studio'da belirli bir proje türüdür.
Yeni Proje iletişim kutusunda, Razor'u aramanız yeterlidir ve Razor Class Libraries şablonunu bulacaksınız.
Şimdi, ASP.NET Identity hakkında konuşurken neden aniden bu Razor Sınıf Kitaplıklarını size açıklamakla zahmet ettim, merak ediyor olabilirsiniz?
Peki, açıklamama izin verin.
Microsoft, bir uygulamada Identity için tipik olarak destek oluşturmak için ihtiyaç duyacağı tüm görünümler dahil olmak üzere Identity'yi bir Razor Sınıf Kitaplığı'na dahil etmiştir.
Tüm görünümler ve işlevsellik, bu nedenle, ASP.NET Core ile otomatik olarak gelen bir Razor Sınıf Kitaplığı içine sarılmıştır.
Daha sonra uygulamamızda kaynak kodu oluşturmak için iskele kullanabiliriz.
Yani, temelde olacak olan şey, varsayılan Razor Sınıf Kitaplığı'na dahil edilen kodun bir kopyasının projemize eklenmesidir. Bu dosyalar aynı ada sahip olacak ve varsayılanların üzerine yazılacaktır.
Giriş işlemi, kayıt, görünüm vb. Üzerinde tam kontrole sahip olmak için bunları uygulamamızda değiştirebiliriz.
Son olarak, düzenimizde de bazı değişiklikler yapmamız gerekecek, böylece bu oturum açma yeteneklerinin görünür hale gelmesi için sayfa şablonumuza ihtiyacımız olacak.
Yapı iskelesi tarafından oluşturulacak kodda, ASP.NET Identity'nin temel aldığı bazı önemli sınıfları göreceğiz.
UserManager sınıfı, veri deposundaki kullanıcı nesneleriyle tüm etkileşimi yönetmek için kullanılır.
Temel olarak, bu sınıfı kullanıcı oluşturma,
kullanıcıları silme ve
genel olarak kullanıcı nesneleriyle ilgili tüm etkileşimleri yapma yolunuz olarak düşünün.
Ayrıca veri deposundaki, yani SQL Server veritabanındaki tüm ilgili değişiklikleri de halledecektir.
Daha sonra, SignInManager sınıfı, kullanıcı Authentication'si ve ilgili eylemler için kullanılacaktır.
Bir kullanıcı adı ve şifreyi kabul eden PasswordSignInAsync gibi yöntemleri tanımlar.
Bu yöntemi tetiklediğimizde, kullanıcının kimliğini doğrulamayı deneyeceğiz.
Başarılı özelliğe sahip, Authentication girişiminin başarılı olup olmadığını gösteren bir işaret sonucu döndürecektir.
Bu sınıfta SignOutAsync, ChangePasswordAsync, ConfirmEmailAsync ve çok daha fazlası gibi birçok başka yöntem mevcuttur.
Hatırlamanız gereken şey, Identity API'nin bu iki önemli sınıfının bize Authentication ile çalışmanın ve kullanıcı yönetiminin ayrıntıları hakkında bir özet sunduğudur.
Identity API, bu zor görevi çok daha kolay hale getirir ve temelde üyeliğin üzerine inşa edildiğinden, ASP.NET Identity API'yi kullandığınızda güvenlikle ilgili özelliklerinizin uygulanmasının doğru şekilde yapıldığından emin olabilirsiniz.
Artık kullanıcılar kaydolabilir ve oturum açabilir.
Çoğu durumda, kullanıcılarımızın belirli bir kaynağa erişmesine izin vermek veya erişimi reddetmek için bu işlevi kullanırız.
Bunun için uygulamaya Authorization desteği eklememiz gerekecek.
Artık bir kullanıcının uygulamaya kaydolmasına izin vermiş olsak da, şu anda sahip olduğumuz bu bilgiyi gerçekten kullanmıyoruz.
Temelde kimlik doğrulama kullandık.
Muhtemelen Authorization bölümünü de kullanmalıyız.
Yalnızca oturum açmış kullanıcıların belirli bir kaynağa erişmesine izin vermek isteyeceğiz.
Burada görebileceğiniz gibi, denetleyicideki Authorize özniteliğini kullanarak veya eylemlerin kendisinde bir controller a erişimi ve tüm eylemlerini kısıtlayabiliriz.
Bu denetleyicinin bir eylem yöntemi için şimdi bir istek alındığında, ASP.NET Core önce istekte bulunan kullanıcının önceden oturum açıp açmadığını kontrol eder ve durum böyle değilse, isteğe izin verilmez.
Kullanıcı önce oturum açmalıdır.
Belirtildiği gibi, kullanıcının Authorize özelliğini kullanarak neler yapabileceği konusunda daha ayrıntılı kontrole sahip olabiliriz.
Ayrıca, kullanıcının yalnızca bu eylem yöntemine erişmesi için etkin bir şekilde oturum açmasını gerektiren bir eylem yöntemi düzeyine de yerleştirebiliriz.
Şimdi sadece Authorize özniteliğini en temel biçiminde kullanmak, kullanıcının belirli bir eylemi gerçekleştirmek için oturum açmış olmasını zorunlu kılmamıza olanak tanır.
Yine de daha birçok seçenek mevcuttur.
Örneğin, authorize özniteliğini de kullanabilir ve izin verilen bir role geçebiliriz ve ardından ASP.NET Core, kullanıcının verilen rolün bir parçası olup olmadığını kontrol eder.
Identity
ASP.NET Core Identity Framework temelde ASP.NET Core'da pişirilen bir üyelik sistemidir.
ASP.NET Identity kullanarak, kullanıcıların kimliğini doğrulayabilir ve yetkilendirebiliriz.
Authentication (Kimlik doğrulama), siteye kimin giriş yapmaya çalıştığını bilmekle ilgilidir.
Authorization (Yetkilendirme) , belirli bir kullanıcının belirli bir kaynağa erişmek için hangi izinlere sahip olduğunu yönetmemize izin verir, böylece kullanıcının örneğin belirli bir sayfayı görüp göremediğini kontrol eder.
Ayrıca, ASP.NET Core uygulamalarımızda rolleri, talepleri ve Identity yönetimi ile ilgili diğer daha gelişmiş seçenekleri yönetmemize izin verebilir.
Bunu yapmak için Google veya Facebook gibi harici sağlayıcılarla bile çalışabilir;
ancak, burada ikincisini tartışmayacağız.
Burada kendimizi siteye giriş yapma özelliğini eklemekle sınırlayacağız.
Kimlik doğrulama (Authentication ) ve yetkilendirme (Authorization) bilgilerini yönetmek için ASP.NET Identity, SQL Server ile kutudan çıkar çıkmaz çalışabilir ve biz de burada yapacağımız şey budur.
ASP.NET Core 2.1'den beri ASP.NET Identity ile çalışma şeklimiz oldukça değişti.
ASP.NET Core'da temelde Identity ile ilgili tüm görünümleri oluşturmasına izin vermek için kullanılabilecek iskele desteğimiz var.
Ve burada kullanacağım şey bu.
Bu yaklaşım, bir geliştirici olarak sizin için iyi yapılandırılmış Identity'i uygulamanıza dahil etmenizi çok kolaylaştırır.
Yapacağımız ilk şey, AppDbContext'in artık IdentityDbContext.'ten miras alınacağından emin olmaktır.
Daha sonra, zaten birkaç kez gördüğümüz gibi, uygulamamızda bazı yapılandırma değişiklikleri yapmamız gerekecek, bu nedenle Startup sınıfında tekrar bazı değişiklikler yapmamız gerekecek.
Destek eklemek için temel yapılandırmanın yanı sıra, ASP.NET Identity ayrıca site kaydı gibi şeyleri daha da kısıtlamamıza izin verir.
Örneğin, kullanıcıları bu arada yapmamız gereken güçlü bir parola kullanmaya zorlamak istiyorsanız, Identity'i basit parolalara izin vermeyecek şekilde yapılandırabiliriz.
Son kullanma süresi gibi güvenlik tanımlama bilgilerinin nasıl davranması gerektiğini yapılandırmak için seçenekleri de kullanabiliriz.
Ve kayıt sırasında kullanılan e-postanın benzersiz olması gibi kullanıcı seçeneklerini yapılandırabiliriz.
Son olarak, geliştiriciler olarak bize kayıt ve günlük tutma sürecine bir kanca vermek için ASP.NET Core 2.1'e eklenen iskele desteğini bu modülde kullanacağımızı söyledik.
İşte az önce bahsettiğim yapılandırma kodunun bir örneği, Identity'in nasıl davranacağını yapılandırmamıza izin veriyor.
Burada gördüğünüz, Startup sınıfına giren kodda, elbette, IdentityOptions'ı, bu durumda kullanıcı şifresinin bir rakam gerektirdiğini, uzunluğun en az sekiz karakter olması gerektiğini ve aynı zamanda bir alfanümerik olmayan karakter.
Ayrıca siteye kaydolan kullanıcının bunu benzersiz bir e-posta adresi kullanarak yapmasını istiyorum.
Kayıt olduktan sonra, bu kullanıcıyı kaydettirmek için koddan yeniden deniyorum, ASP.NET Identity tüm bu doğrulama kontrollerini gerçekleştirecek ve kayıt ancak bu koşullar karşılanırsa başarılı olabilir.
---------------------------------------------- NOT -----------------------------------------------------------