ASP.net формирует параметр проверки подлинности returnURL по ссылке, когда пользователь уже вошел в систему

У меня есть веб-сайт asp.net, который использует проверку подлинности с помощью форм. Когда я предоставляю ссылку на безопасную страницу на веб-сайте в документе Microsoft Word, он устанавливает обратный URL-адрес, даже если я уже вошел на веб-сайт. Это означает, что меня перенаправляют на страницу входа, которая затем направляет меня на страницу несанкционированного доступа, хотя я авторизован для просмотра этой страницы.

Мой код web.config:

<authentication mode="Forms">
  <forms protection="All" requireSSL="true" name="BSOAuthCookie" loginUrl="~/Login/Login.aspx" defaultUrl="~/secure/securepage.aspx" cookieless="UseCookies" timeout="30" />
</authentication>

Это код в загрузке страницы моей страницы входа, чтобы перенаправить меня на страницу неавторизованного доступа:

        If Request.IsAuthenticated AndAlso Not String.IsNullOrEmpty(Request.QueryString("ReturnUrl")) Then
            ' This is an unauthorized, authenticated request...
            Response.Redirect("~/UnauthorisedAccess.aspx")
        End If

Если я добавлю ту же ссылку в электронное письмо и нажму, она будет работать нормально.


person Azeem    schedule 06.06.2013    source источник


Ответы (1)


Используя requireSSL="true", вы заставляете аутентифицированные файлы cookie быть доступными для чтения только на защищенной странице, любая незащищенная страница не проходит аутентификацию.

Добавьте это утверждение в свой код и перед IsAuthenticated, чтобы дважды проверить, что вы звоните с защищенной страницы.

Debug.Assert(HttpContext.Current.Request.IsSecureConnection
                                                  , "Must be on secure page");

Также установите domain="sitename.com" без www, чтобы принудительно установить аутентифицированный файл cookie как из домена, так и из поддомена.

<authentication mode="Forms">
  <forms domain="sitename.com 
        protection="All" requireSSL="true" name="BSOAuthCookie" 
        loginUrl="~/Login/Login.aspx" defaultUrl="~/secure/securepage.aspx" 
            cookieless="UseCookies" timeout="30" />
</authentication>
person Aristos    schedule 06.06.2013
comment
Ссылка, которую я нажимаю, ведет на защищенную страницу. Все запросы отправляются через https, как только пользователь входит в систему. Также в моем методе загрузки страницы на странице входа у меня есть этот блок кода, который изменяет http на https. Пожалуйста, смотрите мой метод загрузки страницы выше. - person Azeem; 06.06.2013
comment
Затем попробуйте domain - и установите Assertion для двойной проверки. - person Aristos; 06.06.2013
comment
Спасибо Аристос! Я попробовал то, что вы предложили, но он все еще делает то же самое. - person Azeem; 06.06.2013
comment
@Azeem, затем отладьте браузер, чтобы увидеть, что и где находится этот файл cookie. - person Aristos; 06.06.2013