проблемы с междоменным входом в систему (совместное использование аутентификации) в приложении asp.net в защищенном режиме IE - PullRequest
1 голос
/ 17 ноября 2010

У меня есть веб-сайт, который работает в двух разных поддоменах, назовем их

foo.mydomain.com и bar.mydomain.com

Я бы хотел, чтобы пользователи разделяли сеанс входа в систему между этими двумя доменами.Вот почему я установил это в web.xml

<authentication mode="Forms">
            <forms timeout="50000000" loginUrl="~/Login/Login.aspx?redirect=true" domain="mydomain.com"/>
        </authentication>

В основном это работает хорошо, но за исключением: IE с включенным защищенным режимом.В этом случае выход из системы больше не работает.В защищенном режиме все работает нормально.

IIS 7 / ASP.NET 3.5

Ответы [ 2 ]

0 голосов
/ 27 марта 2012

Интересно то, что если у вас есть несколько файлов cookie .ASPXAUTH (в одном домене), вы не сможете увидеть их в Request.Cookies, но фреймворк каким-то образом осведомлен о файле cookie, ибудет использовать первое, что он найдет - так что порядок также важен.Решение, касающееся переопределения файла cookie, работает, только если срок действия файла cookie истек - это мой опыт.

0 голосов
/ 26 ноября 2010

Мне кажется, я нашел ответ сам, проблема была в следующем:

Пользователи, которые вошли в систему до того, как я установил свойство домена, имели файл cookie .ASPXAUTH для домена

www.mydomain.com

сейчас, когда пользователь пришел с этим файлом cookie, asp.net не распознал его как вошедшего в систему, но после входа в систему ему было установлено два файла cookie .ASPXAUTH, один для www.mydomain.com и один (новый) для .mydomain.com. Это может привести к путанице в ASP.NET, и пользователь не сможет правильно войти в систему.

Мое решение состояло в том, чтобы вручную удалить старый файл cookie. Поскольку этот файл cookie установлен только как http, это невозможно с помощью JavaScript, но я справился с ним, отправив устаревший (установить дату окончания срока действия вчера) файл cookie с тем же именем .ASPXAUTH и тем же доменом, что и старый файл cookie. Последнее, что я достиг, просто оставив свойство домена пустым (тогда файл cookie автоматически получает текущий домен, который является www.mydomain.com)

Немного длинная история, но она выглядит довольно симпатично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...