ASP.NET переопределяет параметр возврата по умолчанию в перенаправлении, когда пользователь не аутентифицирован - PullRequest
3 голосов
/ 01 сентября 2009

Мы используем проверку подлинности форм с ролями, чтобы ограничить доступ к определенным страницам и областям веб-сайта. Когда пользователь не авторизован, либо потому, что он не вошел в систему или не имеет требуемой роли, он перенаправляется на страницу входа с URL-адресом возврата.

Мы определяем, какой доступ требуется в файле web.config, используя теги авторизации, например:

<authorization>
    <deny users="?"/>
</authorization>

Веб-приложение, над которым мы работаем, использует HttpContext.Current.RewritePath для более удобных URL-адресов и динамических страниц. Так что запрос на "/MyPages/MyDocuments.aspx!" Будет переписан в "/PageTypes/Library.aspx" или что-то в этом роде.

Однако, когда приложение перенаправляет из-за отсутствия у пользователя разрешения, вместо необработанного URL-адреса используется ReWritePath.

Что мне нужно переопределить, чтобы URL-адрес возврата был запрошенным URL-адресом, а не фактическим психическим путем?

Ответы [ 2 ]

1 голос
/ 05 сентября 2009

В зависимости от того, какую версию IIS (6 или 7) вы используете, ответ может быть разным, однако я подозреваю, что проблема в том, что конвейер запросов ASP.NET сначала проверяет подлинность пользователя с использованием проверки подлинности с помощью форм, а затем выполняет код / ​​модуль RewritePath, таким образом перезаписывая нормальный ответ returnto.

Ключ может заключаться в том, чтобы подключить модуль перезаписи к конвейеру раньше, чем модули аутентификации / авторизации. Если вы используете необработанный код, а не модуль HTTP, для этого в базовом классе, global.asax и т. Д., Прежде чем выполнять код, сначала проверьте, является ли пользователь действительным или авторизованным.

конвейер ASP.NET и мысли о перезаписи против маршрутизации

0 голосов
/ 05 октября 2009

В итоге я переместил свой код в Application_AuthorizeRequest, что означало, что пользователь прошел проверку подлинности до того, как была запрошена страница, что сохранило исходный URL-адрес без изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...