MVC'de Özel Kimlik Denetim Özelliği (Custom AuthorizeAttribute) | Yazılım Sınıfı
06 Kasım 2013Murat AygüneyAnasayfa, Mvc / RazorYorum Ekle	Merhabalar, bu yazıda mvc‘de özel kimlik kontrollerini gerçekleştirebileceğiniz bir yöntemden bahsedeceğiz. Bu yöntem sayesinde tek bir metoda veya tüm bir contoller‘a kolayca yetki verebileceksiniz.
Öncelikle attribute ve custom attribute kavramlarını hemen bir örnekle açıklayalım. Aşağıda gördüğünüz metodun üstünde yer alan ValidateAntiForgeryToken isimli ön tanımlı bir attribute‘tur.
public void SomeMethod(string someParameter)
Bu attribute‘un ne anlama geldiğini başka bir yazıda inceleyeceğiz. Burada önemli olan bu attribute metoda bir özellik kazandırdı. Birazdan kimlik denetimi için de yapacağımız buna benzer bir yöntem. Ancak biz bunu özel attribute (custom attribute) ile gerçekleştireceğiz. Özel attribute‘lar ön tanımlı attribute‘lara ek olarak sizin tarafınızdan yazılabilen attributelardır ve kullanımları aynı ön tanımlı attribute‘lar gibidir.
Kimlik denetimi için özel attribute‘umuzu oluşturmaya başlayalım. İlk olarak NeedsAuthorization adlı bir attribute yaratıyoruz. Bu attribute‘u kimlik denetimi için kullanacağımız için AuthorizeAttribute sınıfından inherit ederek bu sınıftan içerisindeki özelliklerden yararlanabiliriz.
public class NeedsAuthorization : AuthorizeAttribute
Bu classın için AuthorizeAttribute sınıfının iki metodunu override etmiş bulunmaktayız. Bunlardan ilki AuthorizeCore; attribute‘u kullandığımız action çağırıldığında ilk olarak gireceğimiz metod. Yani burada yetki ile ilgili ilk kontrolümüzü yapacağız. Ben yetkilerimi bu örnekte session üzerinden kontrol edeceğim.
if (SessionController.User == null)
Yukarıda görüleceği üzere metodun içinde kullanıcımın giriş yapıp yapmadığını kontrol ederek true veya false dönüyorum. Bunun anlamı eğer true dönerse yetki onaylanmış, false dönerse yetki onaylanmamıştır. True dönmesi durumunda attribute‘u kullandığımız action çalışacak ve işlem devam edecek. Ancak yetki onaylanmadıysa ve false döndüyse kullanıcıyı giriş sayfasına yönlendirmek istiyoruz.
filterContext.Result = new RedirectResult("/giris?donURL=" + filterContext.HttpContext.Request.Url.PathAndQuery);
Yukarıda override ettiğimiz HandleUnauthorizedRequest metodu yetki onaylanmaması yani AuthorizeCore metodundan false dönmesi sonucu çağırılır. Biz de burada basit bir yönlendirme ile kullanıcıyı giriş sayfasına yönlendiriyoruz. Bunun için elimizdeki context‘in sonucunu değiştirip bir yönlendirme sonucu hazırlıyoruz. Aynı zamanda yönlendirme için hazırladığımız url‘nin içine donURL adında bir querystring parametresi ekliyoruz. Bu parametrenin içine verdiğimiz değer attribute‘un kullanıldığı action‘ın adresi. Bu sayede kullanıcı giriş yaptıktan sonra bu url ile kullanıcıyı kaldığı sayfaya yönlendirebileceğiz.
Son olarak ufak bir ekleme; attribute‘ları hem tek tek actionlar için hem de tüm controller için kullanabilirsiniz. Bununla ilgili iki örnek aşağıdadır;
Action için attribute kullanımı;
public ActionResult SomeMethod(string someParameter)
Controller için attribute kullanımı;
İsterseniz bu iki kullanımdan istediğinizi limitleyebilirsiniz. Attribute classının öncesine yazacağınız başka bir attribute bu limitleme için çalışır. Aşağıdaki örnekte yazdığımız attribute‘un sadece metodlarda geçerli olması kuralını getirdik. Bu kuralı isterseniz sadece sınıflar için “class” veya tüm tipler için “all” olarak ayarlayabilirsiniz.
Benzer YazılarDevOps Nedir ?Agile Manifesto2016 Yılının “En İyi Girişimcilik Ödülü”Web.Config’de Culture Format – Globalization Ayarı ve Datepicker Localization’ı DeğiştirmeC#’da Objeyi XML’e Çevirme
.net asp.net mvc mvc Custom AuthorizeAttribute MVC'de Özel Kimlik Denetim Özelliği (Custom AuthorizeAttribute)	Previous postC# PadLeft ve PadRight Kullanımı	Next postGoogle Tag Manager – Etiket Yöneticisi	Yazar Hakkında
Murat Aygüney	Bir Cevap Yazın Cancel Reply	Your email address will not be published. Required fields are marked *Yorumİsim * Email * İnternet Sitesi