MVC的AuthorizeAttribute

FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
            // filters.Add(new PermissionAttribute());
        }
    }

public class PermissionAttribute : AuthorizeAttribute
    {
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            var isAuthorized = false;
            if (httpContext != null && httpContext.Session != null) {
                if (HttpContext.Current.Session["UserName"] != null) {
                    isAuthorized = true;
                }
            }
            return isAuthorized;
        }
        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            filterContext.Result = new RedirectResult("~/Account/Login");
        }
    }

 

[Permission]
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewBag.Message = "欢迎使用 ASP.NET MVC!";

            return View();
        }

        public ActionResult About()
        {
            return View();
        }
    }

-- 20211027补充
        private static bool SkipAuthorization(AuthorizationContext filterContext)
        {
            Contract.Assert(filterContext != null);

            return filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true)
                   || filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true);
        }
            //登录检测
            if (!SessionHelper.IsLogin)
            {
                if (filterContext.HttpContext.Request.IsAjaxRequest())
                {
                    filterContext.HttpContext.Response.StatusCode = 500;
                    filterContext.Result = new JsonResult() { Data = new BaseReponseJson() { Msg = "请重新登录" }, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
                }
                else
                {
                    Utils.GotoLogin(filterContext);
                }
                return;
            }

 

 

 
posted @ 2015-06-08 14:58  江境纣州  阅读(128)  评论(0编辑  收藏  举报