После выполнения FormsAuthentication.SignOut () пользователь не может войти снова - PullRequest
0 голосов
/ 11 августа 2009

Я использую formAuthentication со следующим файлом Web.Config.

<authentication mode="Forms">
    <forms name="SnowBall" timeout="30" slidingExpiration="true" loginUrl="Login.aspx"      cookieless="AutoDetect">
    </forms>
</authentication>
<authorization>
    <deny users="?"/>
</authorization>

У меня есть пользовательский элемент управления с кнопкой выхода из системы. Код кнопки выхода из системы:

FormsAuthentication.SignOut();
Response.Redirect("Login.aspx");

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

Когда я закрываю окно браузера и перезапускаю сайт, все работает нормально. Пожалуйста, помогите мне.

Ответы [ 2 ]

0 голосов
/ 11 августа 2009

Я нашел решение. Надеюсь, оно кому-нибудь поможет

Проблема заключается в этой строке

Response.Redirect("Login.aspx");

То, что он делает, перенаправляет пользователя в Login.aspx с ReturnUrl в качестве строки запроса. Например:

Login.aspx? ReturnUrl = "Имя страницы, с которой произошел выход";

Теперь произошло то, что FormsAuthentication.GetRedirectUrl () сохранил этот путь строки запроса и после аутентификации перенаправлял на этот путь. Учетные данные пользователя, которые я вводил, не были авторизованы для просмотра этой страницы. Так что я всегда был на экране входа в систему.

Для решения этой проблемы замените

Response.Redirect("Login.aspx");

С

Response.Redirect(FormsAuthentication.LoginUrl);
0 голосов
/ 11 августа 2009

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

Каждый раз, когда вы используете formauthentication.signout, ваши куки-файлы formauthentication будут удаляться в соответствии с вашей реализацией. Но ваш идентификатор сессии останется там.

Вы можете проверить это, используя браузер fiddler / firefox.

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