2010-05-26 3 views
0

나는 우리의 프로덕션 서버에서 리디렉션 순환을보고하고 필터 :이 질문에 비슷한 알고ASP.NET MVC 액션 우리는 컨트롤러 클래스에서 다음 속성을 사용하도록 설정하면 리디렉션 루프

public class TestRedirectHttpsAttribute : RedirectHttpsAttribute 
{ 
    public override void OnAuthorization(AuthorizationContext filterContext) 
    { 
     if (Convert.ToBoolean(ConfigurationManager.AppSettings["TestSecureEnabled"] ?? bool.FalseString)) 
     { 
      base.OnAuthorization(filterContext); 
     } 
    } 
} 


public class RedirectHttpsAttribute : FilterAttribute, IAuthorizationFilter 
{ 
    public virtual void OnAuthorization(AuthorizationContext filterContext) 
    { 
     if (filterContext == null) 
     { 
      throw new ArgumentNullException("filterContext"); 
     } 

     if (!filterContext.HttpContext.Request.IsSecureConnection) 
     { 
      UriBuilder uriBuilder = new UriBuilder(filterContext.HttpContext.Request.Url); 
      uriBuilder.Scheme = "https"; 
      uriBuilder.Port = -1; // Don't inject port 
      filterContext.Result = new RedirectResult(uriBuilder.ToString()); 
     } 
    } 
} 

-Redirect loop with SSL action filter in ASP.NET MVC을하지만, 2 월에 질문을 받았고 누군가가 더 나은 해결책을 얻길 바랍니다. 링크의 질문에 대한 해결책은 컨트롤러의 작업에서 리디렉션하는 것이지만 모든 작업을 HTTPS로 리디렉션하려면 사용자 지정 FilterAttribute를 컨트롤러에 적용하는 대신 각 작업을 호출해야합니다.

참고 :이 코드는 더미 SSL 인증서를 사용하는 개발 환경에서 작동합니다.

나는 막대기의 끝이 잘못되었을 수도 있고 완전히 다른 것을해야 할 수도 있습니다. 그렇다면 제 사과를 받아주십시오.

답변

1

동일한 문제가있는 사용자. SSL 요청을 처리하고 포트 80을 사용하여 웹 서버로 전달하는로드 밸런서의 결과였습니다. 이로 인해 보안 요청이 실제로 안전하다는 것을 식별 할 수 없었습니다.

관련 문제