Стрелка назад после выхода - PullRequest
5 голосов
/ 24 февраля 2009

У меня есть приложение ASP.NET, использующее проверку подлинности с помощью форм. Когда пользователь нажимает кнопку «Выход» на странице, он запускает следующий код.

        FormsAuthentication.SignOut();
        Response.Expires = 0;
        Response.Cache.SetNoStore();
        Response.AppendHeader("Pragma", "no-cache");

Однако пользователь все равно может просто нажать стрелку назад и увидеть предыдущую страницу без необходимости повторного входа. Я уверен, что это как-то связано с кэшированием предыдущей страницы. Как я могу убедиться, что им будет предложено войти снова с возвращением?

Ответы [ 3 ]

5 голосов
/ 24 февраля 2009
Response.Cache.SetCacheability(HttpCacheability.NoCache);
1 голос
/ 24 февраля 2009

И теперь вы знаете, почему вы получаете сообщение «Вы вышли из системы. Пожалуйста, закройте это окно браузера из соображений безопасности».

Нет кэша, это обходной путь.

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

-Adam

0 голосов
/ 24 февраля 2009

Хотя кэширование не гарантировано, по большей части это работает для меня

    //Used for disabling page caching
    HttpContext.Current.Response.Cache.SetExpires(
      DateTime.UtcNow.AddDays(-1));
    HttpContext.Current.Response.Cache.SetValidUntilExpires(false);
    HttpContext.Current.Response.Cache.SetRevalidation(
      HttpCacheRevalidation.AllCaches);
    HttpContext.Current.Response.Cache.SetCacheability(
      HttpCacheability.NoCache);
    HttpContext.Current.Response.Cache.SetNoStore();

Запустите это в методе OnInit () любой страницы (возможно, с помощью базового класса) на любой странице, которую пользователи не должны кэшировать.

Будьте осторожны, однако, на некоторых страницах может потребоваться разрешить кэширование, например загрузка файлов на страницах SSL и т. Д.

Я где-то нашел этот код, если найду ссылку, обновлю пост.

...