2016-05-02 10 views
0

Приложение MVC4 было создано в соответствии с шаблоном, поставляемым с Visual Studio 2010, и использует SimpleMembership.Пользователь зарегистрирован, хотя в базе данных нет пользователей, и приложение было перезапущено

Несколько минут назад я удалил все данные из всех таблиц в базе данных и перезапустил IIS с помощью команды iisreset. Единственное, что осталось от предыдущей жизни, это несколько файлов cookie (.ASPXAUTH и __RequestVerificationToken_L3J1bmV0c29mdC9BdXRoVGVzdA2) в браузере Opera (я не выходил из системы перед очисткой).

Теперь, когда я пытаюсь загрузить Home/Index, он показывает мне Request.IsAuthenticated == true и User.Identity.Name - это имя последнего пользователя.

То же самое происходит после того, как я перестрою приложение.

Как ??? !!!

ответ

0

Это немного странно, признаюсь. По моему собственному опыту, если пользователь, поддерживающий куки-файл, ушел, будет создано исключение, но, признаюсь, я уже некоторое время работаю над Identity и не помню, была ли ситуация аналогичной в ASP.NET Членство.

Это, помимо просто любопытства, есть ли здесь проблема? Удалите cookie .ASPXAUTH и продолжайте рассказывать о своем бизнесе. Маловероятно, что это никогда не будет проблемой за пределами среды разработки, так как вы не должны удалять пользователей в настройках производства.

+0

Да, есть проблема! Удаление cookie на стороне клиента для выхода из системы не является правильным решением и является огромной дырой в безопасности, поскольку сеанс на стороне сервера не уничтожается. Я всегда отговаривал людей от этого, потому что это плохая практика. Это не фактический выход из системы, но только задержка ключей для сеанса. – Paul

+0

В этом сценарии ничего не осталось от пользователя, кроме файла cookie. Вы удалили все данные в базе данных. Если ваш сеанс находится в базе данных, он тоже ушел. Если он находится в proc или на сервере SessionState, он может сохраняться, но это не имеет большого значения. Сессия обрезается, когда время истекает. Вы можете удалить cookie без проблем, и связанный сеанс, если он все еще существует, исчезнет естественным образом. В этом нет никакой опасности временно существовать, так как в любом случае нет доступа к ней. –

+0

Однако, если вы обеспокоены этим, сбросьте IIS или перезапустите сервер SessionState. * No * session действителен, на данный момент, потому что вы удалили все данные, которые будут связаны с ним. –