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