• mvc 自定义 AuthorizeAttribute 验证逻辑


    public class AuthorizationFilterAttribute : AuthorizeAttribute
        {
            Dictionary<string, string> roles = new Dictionary<string, string>() { 
            {"1","/Home/Index"},
            {"2",""},
            };
    
            /// <summary>
            /// 自定义验证逻辑 返回false时 才会执行HandleUnauthorizedRequest
            /// </summary>
            /// <param name="httpContext"></param>
            /// <returns></returns>
            protected override bool AuthorizeCore(HttpContextBase httpContext)
            {
                var id = Convert.ToString(httpContext.Request.QueryString["id"]);
    
                if (id == null || !roles.ContainsKey(id))
                    return false;
    
                string controller = Convert.ToString(httpContext.Request.RequestContext.RouteData.Values["controller"]);
                string action = Convert.ToString(httpContext.Request.RequestContext.RouteData.Values["action"]);
    
                return string.Compare(roles[id], string.Format("/{0}/{1}", controller, action), true) == 0;
            }
    
            public override void OnAuthorization(AuthorizationContext filterContext)
            {
                base.OnAuthorization(filterContext);
            }
    
            protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
            {
                UrlHelper url = new UrlHelper(filterContext.HttpContext.Request.RequestContext);
                filterContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
    
                filterContext.Result = new RedirectResult(url.Action("login", "home"));
            }
        }
    

     

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
            {
                filters.Add(new AuthorizationFilterAttribute());
                filters.Add(new HandleErrorAttribute());
            }
    

      

    filterContext.Result只要不为空Action就会终止。直接响应请求。
  • 相关阅读:
    How many ways
    HDOj-1016 Prime Ring Problem
    DHU-1241 Oil Deposits
    Red and Black
    HDU-3790 最短路径问题
    vim/Gvim配置
    lintcode431- Connected Component in Undirected Graph- medium
    lintcode120- Word Ladder- medium
    lintcode531- Six Degrees- medium- microsoft
    lintcode624- Remove Substrings- medium
  • 原文地址:https://www.cnblogs.com/lookforFree/p/4923921.html
Copyright © 2020-2023  润新知