当我创建一个新的asp.net mvc 4.0应用程序时,我做的第一件事就是创建并设置一个自定义授权,global filter如下所示:
//FilterConfig.cs
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//filters.Add(new HandleErrorAttribute());
filters.Add(new CustomAuthorizationAttribute());
}
Run Code Online (Sandbox Code Playgroud)
然后我创建了CustomAuthorizationAttribute这样的:
//CustomAuthorizationAttribute.cs
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
//Handle AJAX requests
filterContext.HttpContext.Response.StatusCode = 403;
filterContext.Result = new JsonResult { JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
else
{
//Handle regular requests
base.HandleUnauthorizedRequest(filterContext); //let FormsAuthentication make the redirect based on the loginUrl defined in the web.config (if any)
}
}
Run Code Online (Sandbox Code Playgroud)
我有两个控制器:HomeController和SecureController
HomeController使用[AllowAnonymous] …