2016-08-03 4 views
0

Используя модуль Url Rewrite, я хочу использовать переписывание на основе некоторого значения, полученного во время пользовательского процесса аутентификации.URL перенаправление переназначения на основе результатов PostAuthenticate

Во время PostAuthenticateRequest я пытаюсь установить HTTP-заголовок с HttpContext.Current.Request.Headers.Add("name", "value");, который виден на объекте запроса, прежде чем он покинет HTTPModule.

Однако в URL Rewrite возникает очень простое условие, поскольку текст под 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 реализация ARR происходит в некоторый момент после URL-адреса Rewrite и является фактическим прокси-сервером для внешних серверов.

Как я понимаю, модуль Url Rewrite вытаскивает заголовки на ранней стадии в конвейере запроса. Таким образом, модуль Url Rewrite не будет иметь доступа к заголовкам. Конвейер продолжает выполнять аутентификацию & PostAuthentication и в конечном итоге передает заявку на запрос. Маршрутизация ответственности за прокси.