FormsAuthentication.SignOut () не выходит из системы - PullRequest
139 голосов
/ 05 января 2009

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

FormsAuthentication.SignOut();
Session.Abandon();
FormsAuthentication.RedirectToLoginPage();

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

Ответы [ 23 ]

0 голосов
/ 20 августа 2015

Для MVC это работает для меня:

        public ActionResult LogOff()
        {
            FormsAuthentication.SignOut();
            return Redirect(FormsAuthentication.GetRedirectUrl(User.Identity.Name, true));
        }
0 голосов
/ 31 мая 2013

Имейте в виду, что WIF отказывается сообщать браузеру о необходимости очистки файлов cookie, если сообщение wsignoutcleanup от STS не соответствует URL-адресу с именем приложения из IIS, и я имею в виду CASE SENSITIVE . WIF отвечает зеленой проверкой OK, но не отправляет команду на удаление файлов cookie в браузер.

Итак, вам нужно обратить внимание на чувствительность к регистру ваших URL.

Например, ThinkTecture Identity Server сохраняет URL-адреса посещающих RP в одном файле cookie, но делает их все строчными. WIF получит сообщение wsignoutcleanup в нижнем регистре и сравнит его с именем приложения в IIS. Если он не совпадает, он не удаляет куки, но сообщит браузеру «ОК». Итак, для этого Identity Server мне нужно было написать все URL-адреса в web.config и имена всех приложений в IIS в нижнем регистре, чтобы избежать таких проблем.

Также не забудьте разрешить сторонние куки в браузере, если у вас есть приложения за пределами поддоменов STS, в противном случае браузер не удалит куки, даже если WIF скажет ему об этом.

0 голосов
/ 24 июня 2011

Выполнение Session.abandon () и уничтожение cookie-файлов работает довольно хорошо. Я использую mvc3, и похоже, что проблема возникает, если вы заходите на защищенную страницу, выходите из системы и просматриваете историю браузера. Ничего страшного, но все равно немного раздражает.

Попытка пролистать ссылки в моем веб-приложении работает правильно.

Возможно, стоит отключить кэширование в браузере.

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