首页 > Web开发 > 详细

mvc 自定义 AuthorizeAttribute 验证逻辑

时间:2015-10-30 18:28:05      阅读:434      评论:0      收藏:0      [点我收藏+]
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就会终止。直接响应请求。

mvc 自定义 AuthorizeAttribute 验证逻辑

原文:http://www.cnblogs.com/lookforFree/p/4923921.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!