ASP.Net Web Programlama Yazılım ve Sistem Güvenliği

MVC Attribute Login Kontrol

ASP.NET uygulamamızda sadece kullanıcılara özel Actionlara erişim esnasında login olmuş ve sayfaya istekte bulunan kullanıcının bilgilerini bir değişkene attribute ile yükletebiliriz. OAuth ile sadece cihaz kontrolü yapmak istediğimiz durumlarda tercih edebileceğimiz bu yöntemi başka amaçlarımız için de değiştirebileceğimiz bir örnek paylaşacağım.

App_Start -> FilterConfig.cs
//filterconfig.cs dosyası
public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
            filters.Add(new UserAuth());
        }
    }
//benimOzelSinifim.cs dosyası
[AttributeUsage(AttributeTargets.All)]
public class UserAuth : ActionFilterAttribute
{
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        //actiondan çıkarken
        base.OnResultExecuting(filterContext);
    }

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        //actiona girerken
        AuthControl(filterContext);
        //var controllerName = filterContext.RouteData.Values["controller"];
        //var actionName = filterContext.RouteData.Values["action"];
        //var message = String.Format("{0} controller:{1} action:{2}", "onactionexecuting", controllerName, actionName);
        //Debug.WriteLine(message, "Action Filter Log");
        base.OnActionExecuting(filterContext);
    }

    public bool AuthControl(ActionExecutingContext filterContext)
    {
        var fuser = myCookies.isAuth(filterContext.RequestContext.HttpContext.Request);
        if (fuser.Result)
        {
            filterContext.Controller.ViewBag.LoggedUser = fuser.Data.First();
            return true;
        }
        else
        {
            filterContext.HttpContext.Response.Redirect("../home/Login");
            return false;
        }
    }
}

Kullanımı Aşağıdaki gibidir

[benimOzelSinifim]
public ActionResult Dashboard()
{
    ....
}

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir