Я использую инициализатор DropCreateDatabaseAlways
, поэтому моя база данных уничтожается каждый раз, когда я запускаю приложение (по крайней мере, я надеюсь, что так). Самое смешное, что я все еще вижу себя вошедшим в систему. Я получаю атрибут Authorize
и могу делать опасные вещи. Вероятно, это из-за оставшихся файлов cookie из предыдущего тестирования.ASP.NET MVC аутентифицирует и разрешает несуществующие пользователи
Регистрация/вход в систему моего приложения - это шаблон интернет-приложения MVC 4, не затронутый. Должна ли ASP.NET проверять значения cookie для пользователей, сохраненных в БД? WebSecurity.IsAuthenticated
возвращает true и WebSecurity.CurrentUserName
возвращает имя. Единственное, что работает как ожидалось, - WebSecurity.CurrentUserId
, который возвращает -1. Я новичок, поэтому я могу только догадываться, что это потому, что UserId
не хранится в файле cookie и должен быть получен из базы данных.
Я прав? Если да, значит, я должен всегда использовать WebSecurity.CurrentUserId
, чтобы определить, вошел ли пользователь в систему? WebSecurity.IsAuthenticated
и User.Identity.IsAuthenticated
выглядят довольно бесполезными в этом случае. Я могу удалить учетную запись пользователя, и он или она остаются незатронутыми. Что делать по-другому, если я ошибаюсь?
Я должен спросить. Это действительно имеет значение? В производстве, как часто вы будете выбрасывать базу данных? Никогда? Так в чем проблема? Если вы беспокоитесь, не делайте cookie постоянным (удалите любой флажок, который позволяет им войти в систему, и установите значение false для постоянного файла cookie). Да, вы можете удалить их, и если они в настоящее время вошли в систему, они все равно могут получить доступ, но как только они закроют свой браузер, они не смогут снова войти в систему. –