2011-11-01 3 views
0

VS 2010에서 ASP.NET MVC 3, .NET Framework 4 :ASP.NET MVC 기본 인증 계산 시도?

인증을 위해 web.config를 "none"으로 설정했습니다. 몇 가지 사용자 지정 특성과 기본 인증을 사용할 수있는 코드가 있습니다 (이미 전문가가 여기에서 찾은 바를 바탕으로합니다 - 감사합니다). 3 회 시도가 실패하면 IIS는 자체 "인증 거부"메시지를 표시합니다. 5 회 시도 횟수를 변경하고 자체 오류 페이지를 표시하려고합니다. 지금까지 나는 이것을하는 방법을 볼 수 없다.

정식 클래스에서 발췌 :

CustomBasicAuthorizeAttribute: AuthorizeAttribute 
... 
public override void OnAuthorization(AuthorizationContext filterContext) 
{ 
    if (filterContext == null) throw new ArgumentNullException("filterContext"); 
    if (!Authenticate(filterContext.HttpContext)) 
    { 
     filterContext.Result = new HttpCustomBasicUnauthorizedResult(); 
    } 
    else 
    { 
     if (AuthorizeCore(filterContext.HttpContext)) 
     { 
      HttpCachePolicyBase cachePolicy = filterContext.HttpContext.Response.Cache; 
      cachePolicy.SetProxyMaxAge(new TimeSpan(0)); 
      cachePolicy.AddValidationCallback(CacheValidateHandler, null /* data */); 
     } 
     else 
     { 
      filterContext.Result = new RedirectToRouteResult(
      new RouteValueDictionary 
        { 
          { "client", filterContext.RouteData.Values[ "client" ] }, 
          { "controller", "Account" }, 
          { "action", "Login" }, 
          { "ReturnUrl", filterContext.HttpContext.Request.RawUrl } 
        }); 

     } 
    } 
} 

감사합니다.

+0

코드의 일부만 표시했으며이 부분은 실패한 인증 시도 계산과 관련이 없습니다. 예를 들어 Authenticate 및 AuthorizeCore 메소드가 어떻게 표시되는지는 표시하지 않았습니다. –

+0

여기에 카운팅 코드가없는 이유는 이것이 카운팅이 발생해야하는 곳이라고 생각하기 때문입니다. 이 코드 전체에 중단 점을 넣고 런타임시 디버거의 속성/이벤트/메서드를 탐색하여 아무 것도 표시하지 않습니다. – Snowy

답변

0

IIS가 표시하지 않으면 브라우저가 변경 될 수 없습니다. fiddler를로드하면 브라우저에서 네 번째 요청이 발송되지 않고 IIS에서 세 번째 요청의 응답이 사용자가보고있는 페이지가 아닌지 확인할 수 있습니다.

+0

아직 단서를 얻으려고합니다 ...이 양식이 정식이면 사용자가 최종적으로 거부되어 특정 페이지가 표시 될 때를 알 수 있습니다. 나는 Basic으로 생각하고있었습니다. 3 번째 시도에서 거부 된 자격 증명을 "수락"하여 승인되지 않은 사용자 페이지로 리디렉션하고 로그온 기록을 지우고 나중에 사용자가 다시 인증 할 수 있도록했습니다. – Snowy