将 Web API 作为 MVC 4 项目的一部分进行调查,作为提供基于 AJAX 的 API 的替代方法。我为 MVC 控制器扩展了 AuthorizeAttribute,这样,如果检测到 AJAX 请求,就会返回 JSON 格式的错误。Web API 以 HTML 形式返回错误。这是我与 MVC 控制器一起使用的 AuthorizeAttribute:
public class AuthorizeAttribute: System.Web.Mvc.AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
base.HandleUnauthorizedRequest(filterContext);
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "area", "" },
{ "controller", "Error" },
{ "action", ( filterContext.HttpContext.Request.IsAjaxRequest() ? "JsonHttp" : "Http" ) },
{ "id", "401" },
});
}
}
我怎样才能重现它来为 Web API 提供等效的功能?
我意识到我需要扩展 System.Web.Http.AuthorizeAttribute 而不是 System.Web.Mvc.AuthorizeAttribute 但这使用的是 HttpActionContext 而不是 AuthorizationContext 所以我被我对 Web API 的有限知识和看似不完整的知识所困扰MSDN 上的文档。
我认为这将是正确的方法是否正确?
将不胜感激任何指导。