在ASP.Net Web API中处理HandleUnauthorizedRequest

Thi*_*ena 2 asp.net authorization custom-error-pages asp.net-web-api

我正在开发ASP.Net Web API应用程序,我使用AuthorizeAttribute进行身份验证.当身份验证失败时,执行的代码就是这个.

protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
    {
        HttpContext.Current.Response.AddHeader("AuthenticationStatus", "NotAuthorized");
        actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Forbidden);
        return;
    }
Run Code Online (Sandbox Code Playgroud)

此代码导致从浏览器显示未授权的请求页面,但我想要的是显示我设计的自定义页面.我怎么做?任何帮助表示赞赏.

提前致谢.

小智 6

看看这个:http://weblogs.asp.net/jgalloway/archive/2012/03/23/asp-net-web-api-screencast-series-part-6-authorization.aspx

基本上说,你必须检查客户端的结果代码,如果它是401(未授权),将用户重定向到你设计的自定义页面:

$(function () { 
    $("#getCommentsFormsAuth").click(function () { 
        viewModel.comments([]); 
        $.ajax({ url: "/api/comments", 
           accepts: "application/json", 
           cache: false, 
           statusCode: { 
            200: function(data) { 
                viewModel.comments(data); 
            }, 
            401: function(jqXHR, textStatus, errorThrown) { 
                self.location = '/Account/Login/'; 
            } 
        } 
    }); 
  }); 
});
Run Code Online (Sandbox Code Playgroud)

希望它有所帮助,问候