Exemple #1
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            actionExecuting = new Fruit.Diagnostics.TimingScope("ActionExecuting");
            using (new Fruit.Diagnostics.TimingScope())
            {
                var user        = filterContext.HttpContext.User.Identity.IsAuthenticated ? filterContext.HttpContext.Session["sys_user"] as sys_user : null;
                var area        = (string)filterContext.RouteData.DataTokens["Area"];
                var routeValues = filterContext.RouteData.Values;
                var controller  = (string)routeValues["Controller"];
                var action      = (string)routeValues["Action"];
                var pass        = false;

                if (string.IsNullOrEmpty(area) && (string)routeValues["Action"] != "Index")
                {
                    return;
                }

                if (controller == "Account" && action == "Login")
                {
                    pass = true;
                }
                else if (action.ToLower() == "edit2")
                {
                    pass = true;
                }
                else if (action.ToLower() == "edit3")
                {
                    pass = true;
                }
                else if (controller == "Account" && user != null)
                {
                    pass = true;
                }
                else if (user != null)
                {
                    if (controller == "Home" && action == "Index")
                    {
                        pass = true;
                    }
                    else if (filterContext.ActionDescriptor.GetCustomAttributes(typeof(SharedRoleAuthorizeAttribute), false).Length > 0)
                    {
                        pass = filterContext.HttpContext.User.Authorized((filterContext.ActionDescriptor.GetCustomAttributes(typeof(SharedRoleAuthorizeAttribute), false).First() as SharedRoleAuthorizeAttribute).RoleUrl);
                    }
                    else
                    {
                        pass = filterContext.HttpContext.User.Authorized(area, routeValues);
                    }
                }

                if (!pass)
                {
                    if (controller == "Home" && action == "Index")
                    {
                        filterContext.Result = new RedirectResult(System.Web.Security.FormsAuthentication.LoginUrl);
                    }
                    //else if(!filterContext.HttpContext.User.Identity.IsAuthenticated)
                    //{
                    //    filterContext.Result = new RedirectResult(System.Web.Security.FormsAuthentication.LoginUrl);
                    //}
                    else
                    {
                        filterContext.Result = NoRoleResult.Result;
                    }
                }
            }
        }
Exemple #2
0
 public override void OnResultExecuting(ResultExecutingContext filterContext)
 {
     resultExecuting = new Fruit.Diagnostics.TimingScope("ResultExecuting");
     base.OnResultExecuting(filterContext);
 }