Я работаю над проектом ASP.NET MVC4 с использованием SimpleMembership, который генерирует файл cookie ASPXAUTH, когда вы вошли в систему. Кажется, он работает нормально, но сегодня я открыл еще один проект MVC4, только чтобы заметить, что я уже вошел в систему в.
Это было крайне странно, потому что в новом проекте буквально нет пользователей, определенных в базе данных. Еще больше сбивает с толку то, что когда я нажимаю «выйти из системы» в новом проекте, меня выводят из исходного сайта.
Оба сайта работают на разных портах, но оба на локальном хосте. Изучая запрос, чтобы узнать, почему он возвращает «IsAuthenticated == true», я заметил, что файл cookie ASPXAUTH отправляется на оба сайта, а параметр «домен» файла cookie в отладчике имеет значение «null». Это заставило меня подумать, что, возможно, cookie создается как cookie без домена (честно говоря, я понятия не имею, возможно ли такое вообще!), И посмотрел на параметр web.config, чтобы указать домен :
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" domain="http://localhost:56626" />
</authentication>
К сожалению, установка параметра «домен» привела к тому, что cookie перестал работать. Я пробовал все перестановки (с http, без http, с портом, без порта и т. Д.), И каждый раз, когда я указываю домен, браузер получает файл cookie с правильно указанным доменным именем (я исследовал его в инструментах разработчика Chrome), но затем не может отправить его обратно на сервер последующих запросов.
Итак, я не совсем понимаю, что здесь происходит. Это утечка безопасности, вызванная неправильной настройкой чего-либо? Или это совершенно нормальное поведение, когда файл cookie ASPXAUTH авторизует пользователя в двух совершенно разных веб-приложениях на двух разных портах в одном домене? Я бы протестировал это на веб-хосте, но, к сожалению, в настоящее время у меня нет доступа ни к одному из них, на котором работает MVC4.
Заранее спасибо.