Когда вы говорите, что нажимаете на отладчик и делаете вызов через Javascript, вы делаете это через ajax? Мне интересно, что вы действительно выходите из системы, но не перенаправляете пользователя, а это означает, что файл cookie, который есть у пользователя на этом компьютере, не перезаписывается / уничтожается, поэтому при следующем запросе страницы он снова работает, потому что файл cookie все еще работает. существует.
Когда пользователь нажимает кнопку выхода из системы на вашем сайте, вам действительно нужно, чтобы они перенаправили на новую страницу, чтобы куки могли быть установлены (или удалены) как есть ... Вот статья MSDN при выходе из системы проверки подлинности с помощью форм и его пример кода вызывает RedirectToLoginPage()
, что позволит отсортировать файлы cookie, как упоминалось ранее.
Я нашел FireCookie для Firebug действительно полезным при отладке проблем, связанных с cookie.
Редактировать
Согласно статье MSDN, на которую я ссылался:
Вы можете использовать метод SignOut в
в сочетании с
RedirectToLoginPage метод, чтобы войти один
пользователь и позволить другому пользователю
войти в систему.
В вашем коде нет вызова RedirectToLoginPage
, поэтому простого вызова FormsAuthentication.SignOut()
недостаточно (если вы не собираетесь вручную выполнять работу RedirectToLoginPage)
Редактировать 2
Возможно, измените код кнопки входа, чтобы использовать эту функцию:
FormsAuthentication.RedirectFromLoginPage(username_top.Text, true)
Поскольку это автоматически позаботится о настройке всех файлов cookie ...
Редактировать 3
Рад, что вы разобрались, вышеприведенная функция (правка 2) просто сделала бы то, о чем вы сказали, что пропустила (добавив куки в ответ) ...