Приложение MVC4 было создано в соответствии с шаблоном, поставляемым с Visual Studio 2010, и использует SimpleMembership
.Пользователь зарегистрирован, хотя в базе данных нет пользователей, и приложение было перезапущено
Несколько минут назад я удалил все данные из всех таблиц в базе данных и перезапустил IIS с помощью команды iisreset. Единственное, что осталось от предыдущей жизни, это несколько файлов cookie (.ASPXAUTH
и __RequestVerificationToken_L3J1bmV0c29mdC9BdXRoVGVzdA2
) в браузере Opera (я не выходил из системы перед очисткой).
Теперь, когда я пытаюсь загрузить Home/Index, он показывает мне Request.IsAuthenticated == true
и User.Identity.Name
- это имя последнего пользователя.
То же самое происходит после того, как я перестрою приложение.
Как ??? !!!
Да, есть проблема! Удаление cookie на стороне клиента для выхода из системы не является правильным решением и является огромной дырой в безопасности, поскольку сеанс на стороне сервера не уничтожается. Я всегда отговаривал людей от этого, потому что это плохая практика. Это не фактический выход из системы, но только задержка ключей для сеанса. – Paul
В этом сценарии ничего не осталось от пользователя, кроме файла cookie. Вы удалили все данные в базе данных. Если ваш сеанс находится в базе данных, он тоже ушел. Если он находится в proc или на сервере SessionState, он может сохраняться, но это не имеет большого значения. Сессия обрезается, когда время истекает. Вы можете удалить cookie без проблем, и связанный сеанс, если он все еще существует, исчезнет естественным образом. В этом нет никакой опасности временно существовать, так как в любом случае нет доступа к ней. –
Однако, если вы обеспокоены этим, сбросьте IIS или перезапустите сервер SessionState. * No * session действителен, на данный момент, потому что вы удалили все данные, которые будут связаны с ним. –