Проверка подлинности по формам - выход из системы и история страниц - PullRequest
1 голос
/ 15 августа 2011

На моем сайте ASP.NET, когда пользователь нажимает кнопку выхода из системы, я вызываю FormsAuthentication.SignOut и Session.Abandon и перенаправляю их на страницу входа. Это отлично работает.

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

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

1 Ответ

1 голос
/ 15 августа 2011

Предотвращение кэширования учетных данных и содержимого:

Во-первых, убедитесь, что файл cookie форм не создается залипшим:

FormsAuthentication.SetAuthCookie(userName, false);

Далее, кое-что в Global.asax для предотвращения запросов странициз кэширования:

public override void Init()
{
    base.Init();

    BeginRequest += new EventHandler(OnBeginRequest);
}

void OnBeginRequest(object sender, EventArgs e)
{
    if (!(Request.Path.EndsWith("Resource.axd")))
    {
        Response.Cache.SetExpires(DateTime.UtcNow.AddSeconds(-1));
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Cache.SetNoStore();
    }
}

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

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