7

Я работаю над проектом ASP.NET MVC4 с использованием SimpleMembership, который генерирует cookie ASPXAUTH при входе в систему. Кажется, он работает нормально, но сегодня я открыл другой проект MVC4, только чтобы заметить, что я уже вошел в систему.Simplemembership ASPXAUTH cookie, проверяющий два отдельных веб-проекта

Это было чрезвычайно странно, потому что новый проект буквально не имеет пользователей, определенных в базе данных. Еще более неприятно, когда я ударил «выйти из системы» в новом проекте, он вывел меня из исходного сайта.

Оба сайта работают на разных портах, хотя и на локальном хосте. При рассмотрении запроса, чтобы узнать, почему он возвращает «IsAuthenticated == true», я заметил, что cookie ASPXAUTH отправляется на оба сайта, а параметр «domain» файла 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 на данный момент.

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

+0

Проверить здесь http://stackoverflow.com/questions/1612177/are-http-cookies-port-specific – Chandermani

ответ

5

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

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

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

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="2880" name="A_UNIQUE_NAME" /> 
</authentication> 
+0

работает! Полезно, если у вас есть 2 открытых проекта одновременно. – cryss