Simplemembership ASPXAUTH cookie, проверяющий на двух отдельных веб-проектах

Я работаю над проектом 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.

Заранее спасибо.


person Ron Penton    schedule 02.01.2013    source источник
comment
Отметьте здесь stackoverflow.com/questions/1612177/   -  person Chandermani    schedule 07.01.2013


Ответы (2)


ASPXAUTH - это имя файла cookie по умолчанию, но, изменив это имя для каждого проекта в Web.Config, вы можете применить его только к этому проекту.

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" domain="http://localhost:56626"  name=".PROJ1AUTH"/>
</authentication>
person Community    schedule 22.01.2013

Добавьте к элементу формы атрибут Имя. Он будет называть authcookie после имени, которое вы вводите, что делает его уникальным среди других проектов.

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" name="A_UNIQUE_NAME" />
</authentication>
person BillD    schedule 06.02.2013
comment
Работает! Полезно, если у вас одновременно открыто 2 проекта. - person cryss; 29.04.2013