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
Если я добавлю ту же ссылку в электронное письмо и нажму, она будет работать нормально.
1 ответ
С использованием requireSSL="true"
Вы заставляете аутентифицированные куки-файлы быть доступными только для чтения на защищенной странице, любая незащищенная страница не проходит аутентификацию.
Добавьте это утверждение в свой код и перед IsAuthenticated
перепроверить, что вы звоните с защищенной страницы.
Debug.Assert(HttpContext.Current.Request.IsSecureConnection
, "Must be on secure page");
Также установите domain="sitename.com"
, без www
, чтобы принудительно установить аутентифицированный куки-файл как с домена, так и с субдомена.
<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>