FormsAuthentication.SignOut не работает должным образом - PullRequest
0 голосов
/ 05 мая 2011

Я использую проверку подлинности с помощью форм в своем веб-приложении asp.net.Когда пользователь нажимает кнопку «Выйти», я выполняю следующий код:

  FormsAuthentication.SignOut();
  FormsAuthentication.RedirectToLoginPage();

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

Мой веб-конфиг выглядит так:

<authentication mode="Forms">
    <forms name="NoiseAdvisor" loginUrl="~/Login.aspx" timeout="20" slidingExpiration="true" cookieless="AutoDetect" protection="All" requireSSL="false" defaultUrl="~/Restricted/Home.aspx"/>
</authentication>

Что-то мне не хватает?

Ответы [ 4 ]

1 голос
/ 05 мая 2011

Можете ли вы подтвердить, что страница не кэшируется вашим браузером, и вы действительно видите кэшированную версию?Нажмите Shift-F5 и посмотрите, обновляется ли страница или вы перенаправлены на страницу входа.В этом случае вы можете поиграть с настройками кэша, чтобы пользователи не могли вернуться на страницу.

0 голосов
/ 26 мая 2011

Это работает для меня

public virtual ActionResult LogOff()
    {
        FormsAuthentication.SignOut();
        foreach (var cookie in Request.Cookies.AllKeys)
        {
            Request.Cookies.Remove(cookie);
        }
        foreach (var cookie in Response.Cookies.AllKeys)
        {
            Response.Cookies.Remove(cookie);
        }
        return RedirectToAction(MVC.Home.Index());
    }
0 голосов
/ 05 мая 2011

Вы проверили, чтобы убедиться, что вы правильно ограничиваете страницу?

Например:

  <location path="RestrictedPage.aspx">
    <system.web>
      <authorization>
        <deny users="?" />
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

Или вы можете физически проверить на странице с ограничениями:

if (!(HttpContext.Current.User == null))
    if (HttpContext.Current.User.Identity.IsAuthenticated)
          // show restricted content
0 голосов
/ 05 мая 2011

Когда вы «вставляете» URL в ваш браузер, он выдаст вам кэшированную версию страницы (то же представление, что и при последнем посещении), если вы явно не отключили кэширование клиента для этой страницы.Как уже упоминалось в cdonner, нажмите Shift + F5, и я предполагаю, что это переместит вас на страницу входа.

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