обнаружение asp.net перенаправления пользователей на страницу входа - PullRequest
4 голосов
/ 15 февраля 2009

У меня есть каталог на моем сайте, который защищен от анонимных пользователей. мой web.config выглядит так

<location path="members">
    <system.web>
        <authorization>
            <allow roles="members" />
            <deny users="*" />
        </authorization>
    </system.web>
</location>

если анонимные пользователи попытаются получить доступ к страницам в каталоге "/ members", они будут перенаправлены на страницу входа.

из кода на странице входа в систему, есть ли способ определить разницу между пользователем, перенаправляемым таким образом, и пользователем, вручную переходящим на страницу входа? (либо введя URL-адрес, либо щелкнув ссылку на страницу входа)

я знаю, что сеть не имеет состояния, поэтому, возможно, эти два запроса неразличимы

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

примечание: я не могу использовать "ReturnUrl" в строке запроса, потому что я украслю его таким же образом

Ответы [ 2 ]

1 голос
/ 16 февраля 2009

Помимо проверки Referer, вы также можете проверить строку запроса для свойства ReturnUrl. Что означало бы, что Asp.Net перенаправил пользователя. Опять же это не 100%, хотя.

1 голос
/ 15 февраля 2009

Вы можете проверить «Реферер» Заголовок запроса

Поле заголовка запроса Referer [sic] позволяет клиенту указывать для удобства сервера адрес (URI) ресурса, из которого был получен Request-URI («реферер», хотя поле заголовка опечатка.)

Но браузер может лгать о реферере. Также посмотрите эту статью , в ней приведены некоторые примеры несанкционированного доступа и полностью описано, как работает авторизация asp.net.

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