본문 바로가기

.Net

CustomAuthorizeAttribute filter에서 ViewData 사용하기

- Controllers

 [AdminAuthorize(MenuCode = M007, MenuName = "상세화면")]
        public ActionResult detail(string id)
        {
            /* logic Area */
            return View();
        }



- CustomAuthorizeAttribute

    public class CustomAuthorizeAttribute : AuthorizeAttribute
    {

        public int MenuCode = 0;
        public string MenuName = string.Empty;
        public AuthorizationContext Context { get; protected set; }

        protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext)
        {
            if (httpContext == null) throw new ArgumentNullException("httpContext");
           
        /* logic for filter */
        if(!isValid()) return false;
        
            this.Context.Controller.ViewData["PageCode"] = MenuCode;
            this.Context.Controller.ViewData["PageName"] = MenuName;

            return true;
        }

        public override void OnAuthorization(AuthorizationContext filterContext)  
        {
            this.Context = filterContext;  
            base.OnAuthorization(filterContext);  
        }
    
    private bool isValid()
    {
     return true;
    }

    }