• Buradasın

    ASP.NET Core'da Mini E-Ticaret Uygulamasında Rol Tabanlı Yetkilendirme Eğitimi

    youtube.com/watch?v=XZ4uxBGm1oI

    Yapay zekadan makale özeti

    • Bu video, bir eğitmen tarafından sunulan ASP.NET Core uygulamalarında rol tabanlı yetkilendirme konusunu ele alan teknik bir eğitim içeriğidir.
    • Video, mini e-ticaret uygulamasında rol tabanlı yetkilendirme sisteminin nasıl oluşturulacağını adım adım göstermektedir. Eğitmen önce kullanıcı rollerini (create product, update product, delete product, get order by id, get all orders vb.) tanımlar, ardından bu rolleri endpointlerle ilişkilendirir ve custom authorization filter oluşturarak HTTP isteklerini filtreler. Ayrıca, kullanıcı rollerini kontrol etmek için servis katmanında gerekli fonksiyonları geliştirir ve yetki hatası yönetimi konusunu da ele alır.
    • Videoda ayrıca HTTP context nesnesinin kullanımı, kullanıcı bilgilerine erişim, action descripter üzerinden istek bilgilerinin elde edilmesi ve reflection kullanarak endpoint bilgilerinin okunması gibi teknik konular da detaylı olarak anlatılmaktadır. Eğitmen, barkod okuma, stok güncelleme ve tofactor authenticator ile çalışma gibi gelecek derslerde işlenecek konular hakkında da bilgi vermektedir.
    00:01Mini E-Ticaret Uygulamasında Yetkilendirme
    • Bu derste mini e-ticaret uygulamasında rol tabanlı yetkilendirme (authorization) işlemi gerçekleştirilecek.
    • Custom authorization filter oluşturulacak ve kullanıcıların rollerine göre endpoint'lere erişim kontrolü yapılacak.
    • Yetkisi olmayan kullanıcılar için 401 Unauthorized statüs kodu döndürülecek.
    01:15Roller ve Endpoint'lerin Tanımlanması
    • Product ve order endpoint'leri için gerekli roller tanımlanacak.
    • Product rolleri: Create Product Yetkisi, Update Product Yetkisi, Delete Product Yetkisi, Get Product Yetkisi.
    • Order rolleri: Get Order By Id Yetkisi, Get All Orders Yetkisi, Create Order Yetkisi, Compte Order Yetkisi.
    04:31Filter Oluşturma
    • Authorization işlemi için bir filter oluşturulacak ve middleware mantığıyla sisteme dahil edilecek.
    • Filter, gelen isteklere göre rolleri kontrol edecek ve yetkili kullanıcılar için istekleri başarılı şekilde işleyecek.
    • Filter, API kısmında oluşturulacak ve arka planda kullanılan iş mantığı ontecture'daki gerekli noktalarda tanımlanacak.
    06:16Rol Permission Filter
    • API klasörüne "filters" adında bir klasör oluşturulacak ve içinde "RolPermissionFilter" adında bir sınıf eklenecek.
    • Filter için IAsyncActionFilter interface'inden implementasyon alınacak.
    • IAsyncActionFilter, OnActionExecutionAsync isimli fonksiyonu uygulatıyor ve asenkron operasyonlar gerçekleştirebiliyor.
    08:34Kullanıcı Kimliğini Kontrol Etme
    • Her istekte kimin attığını yakalamak için Identity'deki Name özelliğini kullanılacak.
    • JWT token konfigürasyonunda name claim type'a "name" verildiğinde, token içindeki "name" claim'ine karşılık "user name" değeri atanıyor.
    • HttpContext üzerinden yapılan HTTP isteklerine erişilerek, user identity name özelliği kullanılarak kullanıcı bilgisi elde edilebiliyor.
    11:24Filter ve Action Kontrolü
    • Name bilgisinin dolu olup olmadığı kontrol ediliyor, eğer dolu ise bir operasyon yapılacak.
    • Gelen istekte problem yoksa context üzerinden action descripter property'si çağrılacak.
    • Action descripter, hangi actiona gitmek istendiğine dair bilgileri yakalayabilir.
    12:33Action Bilgilerini Yakalama
    • Action descripter, action'ın hangi parametreleri alacağı, hangi rotaya sahip olduğu gibi yüzeysel bilgileri verir.
    • Controller action descripter türüne cast edilerek action name bilgisi elde edilebilir.
    • Filter tetiklendiğinde ve name bilgisi geldiğinde hangi actiona gittiğimizin bilgisini action name den elde edebiliriz.
    14:18Reflection Kullanımı
    • Reflection kullanarak ilgili action'ın işaretlenmiş olduğu attribute'ı yakalayıp özelliklerini okuyabiliriz.
    • GetCustomAttribute metodu kullanılarak AuthorizationDefinition attribute'ı yakalanır.
    • Polimorfizm kuralları gereği, attribute'ı kullanabilmek için Definition türüne cast etmek gerekir.
    17:50HTTP Method Bilgilerini Yakalama
    • HTTP method bilgilerini elde etmek için tekrar reflection kullanılır.
    • GetCustomAttribute metoduyla HttpGet, HttpPost, HttpDelete gibi HTTP method attribute'ları yakalanır.
    • Bu attribute'lar HttpMethodBase class'ından türemektedir.
    19:00Kod Formatı Oluşturma
    • Veritabanında sadece kodu çekmek yeterlidir, kodun kendine göre bir standardı vardır.
    • Kod formatı HTTP type, action type ve definition bilgilerinden oluşur.
    • Bu bilgiler kod formatına dönüştürülecek ve veritabanında kontrol edilecektir.
    20:06HTTP Request İşleme ve Kod Oluşturma
    • HTTP request üzerinden gelen bilgileri kod olarak dönüştürmek için önce HTTP, action type ve definition bilgilerini elde etmek gerekiyor.
    • Eğer action metodu HTTP ile işaretlenmemişse, .NET Core default olarak GET olarak kabul eder ve bu bilgiyi kodumuzda belirtmemiz gerekir.
    • Action type ve definition bilgilerini elde ettikten sonra, bu bilgileri kullanarak kodumuzu oluşturabiliriz.
    22:44Business Operasyonu ve Yetkilendirme Kontrolü
    • Filterdan elde edilen kod bilgisini veri tabanında kontrol etmek ve kullanıcıya uygun sonuç döndürmek için business operasyonu gerekiyor.
    • Eğer kullanıcıya gerekli rol yetkisi yoksa, UnauthorizedResult nesnesi döndürülerek kullanıcıya 401 hatası gösterilir.
    • Eğer rol yetkisi varsa, next() metodu ile bir sonraki middleware fonksiyonu tetiklenir.
    24:45Servis Operasyonu Oluşturma
    • Rol tabanlı yetkilendirme için servis operasyonu oluşturmak için User servisine gidilir.
    • Boolean değer döndüren "HasRolePermission" fonksiyonu oluşturulur ve kullanıcıya rol yetkisi var mı yok mu kontrolü için kullanılır.
    • Bu fonksiyon, kullanıcı adı ve endpoint kodu bilgilerini parametre olarak alarak veritabanında kontrol yapar.
    28:05Kullanıcı ve Rol Kontrolü
    • Kullanıcıya karşılık tüm rolleri elde etmek için "GetRolesToUser" fonksiyonu kullanılır.
    • Eğer kullanıcının hiç rolü yoksa, fonksiyon false döner çünkü hiç rol verilmemiş demektir.
    • Endpoint bilgilerini çekmek için EndpointRepository oluşturulur ve dependency injection ile talep edilir.
    31:17Yetkilendirme Sistemi Oluşturma
    • Endpoint, repository ve table ile çalışarak kullanıcı rolleri ile endpoint rolleri arasında uyumsama kontrolü yapılacak.
    • Endpoint rolleri eklenerek first or default fonksiyonu kullanılarak hangi action endpoint'e karşılık gelecek kontrol edilecek.
    • Endpoint içindeki roller ile kullanıcı rolleri arasında uyuşan bir rol varsa true, yoksa false dönecek.
    33:07Rol Kontrolü Algoritması
    • Hesrol değişkeni false olarak atanarak kontrol edilecek ve endpoint null değilse operasyon yapılacak.
    • Endpoint rollerinin sadece isimleri elde edilerek, user rolleri ve endpoint rolleri arasında foreach döngüsü kullanılarak karşılaştırma yapılacak.
    • Eğer user rolü ile endpoint rolü eşitse hesrol true değerine alınıp döngüden çıkılacak.
    36:45Filter Oluşturma ve Uygulama
    • Filter'da user service' de oluşturulan fonksiyon çağrılacak ve operasyon test edilecek.
    • Dependency injection ile i user service interface'ini edinerek has roll permission to endpoint fonksiyonu çağrılacak.
    • Program.cs dosyasına oluşturulan filter eklenerek uygulama test edilecek.
    39:22Admin Kullanıcısı Ayarları
    • GNC adlı kullanıcı default olarak admin olarak ayarlanacak.
    • Kullanıcılar tanımlanırken admin kontrolü için bir kolon eklenebilir.
    • Gizli sekmede giriş yaparak productlara erişim sağlanabilirken, ordulara erişim get all orders yetkisi verilmediği için sağlanamayabilir.
    42:29Rol Tabanlı Yetkilendirme
    • Şube yetkilisine "get all orders" yetkisi verildiğinde, anlık olarak siparişleri görebilir hale geldi.
    • Sipariş detaylarını görmek için "get order by id" yetkisinin de verilmesi gerekiyor.
    • Siparişi tamamla işlemi için "complete order" yetkisinin verilmesi gerekiyor, aksi takdirde yetki hatası veriyor.
    43:59Yetkilendirme Sisteminin Yönetimi
    • Tüm sayfalara ve endpointlere karşılık roller oluşturulmalı ve kullanıcılarla ilişkilendirilmelidir.
    • Rol tabanlı yetkilendirme mimari ile uygulamada endpointlere karşılık tüm kullanıcıların yapacağı işlemleri detaylı bir şekilde yönetebilir hale gelmiş olduk.
    • Yetkilendirme işlemlerini GNC üzerinden yaparak manuel rol verme operasyonlarından kurtulmak mümkün.
    45:12Yetki Hatası Yönetimi
    • Yetki hatası durumunda kullanıcıya "bu işlemi yapmaya yetkiniz bulunmamaktadır" mesajı verilmelidir.
    • Yetki kontrolünde mimariye müdahale edildiğinde next fonksiyonunun tetiklenmemesi gerekiyor.
    • Hata mesajlarının doğru şekilde görüntülenmesi için kodlarda gerekli düzenlemeler yapılmıştır.
    52:32Gelecek Çalışmalar
    • Bir sonraki derste barkod okuma işlemi yapılacak ve barkodlar ürünlerin detaylarında listelenecek.
    • Barkodlar okunduğunda ürünler sepete eklenmesi planlanıyor.
    • Proje son üç-beş ders içinde tamamlanacak ve hazır bir template yerine tüm detayların kendileri tarafından yapıldığı vurgulanıyor.

    Yanıtı değerlendir

  • Yazeka sinir ağı makaleleri veya videoları özetliyor