ben

OMÜ , Bilgisayar Mühendisliği, 13'

22 Eylül 2022 Perşembe

Authorization işlemi

 Oturum açan kullanıcının yetkisine göre sayfaların açılıp açılmaması işlemini sayfalar arasında if else le butonları gizleyerek yapsak da URL üzerinden erişime açık olmaktadır. Güvenlik açısından Authorization servisini kullanalım.

Startup.cs dosyasının ConfigureService methodunun içine Policy'ler yani rol yetkileri vermemiz gerekiyor.

  services.AddAuthorization(options =>
 {
   options.AddPolicy("AdminPolicy", policy => policy.RequireClaim("role", "Admin"));
   options.AddPolicy("PumberPolicy", policy => policy.RequireClaim("role", "Cashier", "Pumber"));
   options.AddPolicy("AdminPolicy", policy => policy.RequireClaim("role", "Cashier", "Admin" ));
   options.AddPolicy("PublicPolicy", policy => policy.RequireClaim("role", "Cashier", "Admin","Pumber"));
 });

Projemizde 3 rol var,  Sadece Admin yetkisi ile açılan sayfalara AdminPolicy , Oturum açan tüm kullanıcılar için PublicPoliciy, Sadece Pombacı olan ve admin olanlar için PumberPolicy, Sadece Kasiyer olanlar için ise CahsierPolicy yetkisini kullanacağız... Adminlerin tüm sayfalara erişimi olacağı için yetkilere admin de ekledik Projeye ve algoritmik kurguya göre değişir..

Yine Startup.cs altındaki configure içerisine aşağıdaki komutu ekleyelim

 app.UseAuthentication();
  app.UseAuthorization();

Burada dikkate dilmsi gereken nokta Authentication servisinin Authorization servisinden önce yazılması gerektiğidir.

Şimdi Controller ve actionları yetkiye göre kısıtlandırabiliriz. Öncelikle sadece Adminlerin gireceği Management Aresındaki tüm controllerin başına aşağıdakini yazarsak burada action bazlı kısıtlamaya gerek duymayız. Aşağıda HomeController için ;

    [Area("Management")]
    [Authorize(Policy = "AdminPolicy")]

Kullanıcı panelde ise sayfaları açtıkça bu sayfalardaki ilgili actionlara yukarıdaki gibi kısıtlama yapacağız, Eğer o kontrollardaki tüm actionlar aynı rol yetkisinde kısıtlanmış ise tek tek actionlara yazmak yerine  controller basına yazarak tamamnını kısıtlayabiliyoruz.

Çalıştırıp Pumper yetkisindeki mustafa , 12345 şifresi ile giriş yapıp admin panele url üzerinden girmeye çalışalım..










Hiç yorum yok: