2

ASP.Net 웹 API 응용 프로그램을 개발 중이며 인증에 AuthorizeAttribute를 사용했습니다. 인증이 실패하면 실행되는 코드는 다음과 같습니다.ASP.Net 웹 API HandleUnauthorizedRequest

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

이 코드 결과는 브라우저에서 인증되지 않은 요청 페이지를 표시하지만 내가 원하는 것은 내가 디자인 한 사용자 정의 페이지를 표시하는 것입니다. 어떻게해야합니까? 어떤 도움을 주셔서 감사합니다.

고맙습니다.

답변

3

WebApi를 사용하는 경우 HandleUnathorizedRequest 내에서 사용자 정의 페이지로 리디렉션 할 수 있다고 생각하지 않습니다. 코드 결과는 승인되지 않은 요청 페이지를 표시합니다. 이는 브라우저가 403 코드에 응답하는 방식이기 때문입니다. WebApi는 HttpMessage 교환에서 작동하며 기본적으로 Json 또는 Xml 미디어 유형을 사용합니다. 사용자 정의 된 페이지를 text/html로 반환하려면 여기에 설명 된대로 자신의 미디어 포맷터를 작성해야합니다 (http://www.asp.net/web-api/overview/formats-and-model-binding/media-formatters).

6

확인이 아웃 : 그것은 기본적으로 클라이언트 측의 결과 코드를 확인해야하고, 경우에 401 (무단) 말한다 무엇 http://weblogs.asp.net/jgalloway/archive/2012/03/23/asp-net-web-api-screencast-series-part-6-authorization.aspx

, 당신은했습니다 사용자 정의 페이지로 사용자를 리디렉션 디자인 :이 도움이

$(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/'; 
      } 
     } 
    }); 
    }); 
}); 

희망,

에 관하여