2016-08-03 4 views
0

URL 다시 쓰기 모듈을 사용하여 사용자 지정 인증 프로세스 중에 검색된 일부 값을 기반으로 다시 쓰기를 실행하고 싶습니다.URL PostAuthenticate 결과를 기반으로 한 다시 쓰기 리디렉션

PostAuthenticateRequest 동안 나는 HTTPModule을 떠나기 전에 요청 객체에 보이는 HttpContext.Current.Request.Headers.Add("name", "value");으로 HTTP 헤더를 설정하려고 시도했다.

그러나 URL 재 작성에서 HTTP_name 아래에 텍스트가 없기 때문에 매우 기본적인 조건이 실패합니다. 에 조건에 패턴을 변경

<rule name="customrule" enabled="true" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
    <add input="{HTTP_name}" pattern=".+" /> <!-- doesn't work --> 
    <!-- <add input="{HTTP_name}" pattern=".*" /> works --> 
    </conditions> 
    <action type="Rewrite" url="https://someotherdomain/{R:0}" /> 
</rule> 

. *는 규칙 패스를 할 수 있지만 URL은 https:///{R:0}로 나온다. 수동으로 name 헤더 을 추가 한 후 서버에서 리소스를 요청하는을 찾으면 데이터를 찾을 수 있습니다. 불행히도 나는 요청이있을 때까지 데이터를 가지고 있지 않습니다.

IIS 모듈 전체에서 헤더를 사용할 수 있습니까? PostAuthenticate에서 URL Rewrite로 값을 가져 오는 방법은 무엇입니까?

답변

0

블로그 당 http://blogs.iis.net/wonyoo/relationship-between-application-request-routing-and-url-rewrite-modules URL 재 작성 후 어느 시점에서 ARR 구현이 발생하고 외부 서버의 실제 프록시입니다.

내가 알고 있듯이 URL 재 작성 모듈은 요청 파이프 라인에서 헤더를 일찍 추출합니다. 따라서 URL 다시 쓰기 모듈은 헤더에 액세스 할 수 없습니다. 파이프 라인은 인증 & PostAuthentication을 통해 계속 실행되고 결국 응용 프로그램 요청 라우팅에 프록시 역할을 맡깁니다.