0

나는 유용한 튜토리얼 here을 기반으로 주장 승인을 사용하는 MVC 응용 프로그램이 있습니다. 코드에서 나는 각각의 자원과 행동Asp.Net MVC HTTP 오류 401.0 - 무단으로

public class CustomAuthorisationManager : ClaimsAuthorizationManager 
{ 
    public override bool CheckAccess(AuthorizationContext context) 
    { 
     string resource = context.Resource.First().Value; 
     string action = context.Action.First().Value; 

     if (action == "Show" && resource == "Code") 
     { 
      bool livesInScotland = context.Principal.HasClaim(ClaimTypes.Country, "Scotland"); 
      return livesInScotland; 
     } 

     return false; 
    } 
} 

에 대해 내 자신의 논리를 구현하는 ClaimsAuthorizationManager의 checkAccess 메소드를 오버라이드 (override) 그리고 모든 떨어져 checkAccess 메소드가 false를 리턴 할 때마다 내가 HTTP 오류 401.0를 얻을 수 있다는 사실, 잘 작동 - 권한, 어떤 내가 읽은 그대로는 IIS에서만 처리 할 수 ​​있습니다. 내 질문은 어떻게 코드를 사용자 정의 오류 페이지를 표시하려면이 오류를 처리 할 수 ​​있습니다. here 또는 here과 같은 여러 가지 솔루션을 보았지만 제대로 작동하지 못했습니다.

답변

0

IHttpModule을 구현할 수 있습니다. 구현 가이드는 here입니다. httpmodule에 대한 좋은 점은 거의 모든 HTTP 응답을 잡아서 원하는대로 할 수 있다는 것입니다.

또는 this SO question에서 확인할 수 있습니다. 어쩌면 당신은 그것을 더 좋아할 것입니다.

+0

IHttpModule 솔루션을 사용해 보았지만 응용 프로그램이 모듈을 보지 못했습니다. MVC 내에서 사용할 수 있습니까? 두 번째 솔루션과 관련하여, ASP에서 처리하는 404 및 500 오류에 대해서만 언급하고 있지만, 알고있는 한 401은 IIS에 의해 해결됩니다 (http://patrickdesjardins.com/blog/ 참조). asp-net-mvc-http-error-401-0-unauthorized) – Bartosz

+0

HttpModule은 MVC가 아닌 IIS 수준에서 단계를 밟습니다. 그러나 디버깅 할 때 응용 프로그램 디버거는 중단 점이 있으면 모듈로 들어갑니다. 문제가 있습니까? 우리는''에 모듈을 등록하고' '을 설정했습니다. 우리는 아무런 문제가 없었다. – pepo