Аутентификация форм asp.net вышла из системы при входе в другой экземпляр - PullRequest
3 голосов
/ 23 ноября 2011

Я занимаюсь разработкой на своем локальном компьютере с использованием VS 2010 и запускаю свой dev-код в Cassini, я также взял копию того же кода и развернул ее в c: \ mp и настроил веб-приложение в IIS7 так, чтобы он указывал в этот каталог.

Оба приложения указывают на разные базы данных. Я получаю доступ к IIS один http://localhost/mp

Когда я вхожу в один из них, это приводит к тому, что я выхожу из другого, если я уже вошел в систему.

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

Настройка проверки подлинности форм выглядит следующим образом

<authentication mode="Forms">
    <forms name="MP" loginUrl="~/login.aspx" protection="All" timeout="20" path="/" slidingExpiration="true" cookieless="UseCookies" defaultUrl="~/Modules/Enquirer/Default.aspx" />
</authentication>

Мы также используем роли и поставщиков членства

 <roleManager enabled="true" cacheRolesInCookie="true" defaultProvider="AspNetSqlRoleProvider">
            <providers>
                <clear />
                <add name="AspNetSqlRoleProvider" connectionStringName="mpconnectionstring" applicationName="mp" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
            </providers>
        </roleManager>
        <membership defaultProvider="AspNetSqlMembershipProvider" userIsOnlineTimeWindow="20" hashAlgorithmType="SHA1">

Мы также используем состояние сеанса inProc для обоих, хотя я не уверен, что это будет проблемой.

Кто-нибудь может подсказать, почему это происходит и как обойти это?

Ответы [ 2 ]

4 голосов
/ 23 ноября 2011

Проблема связана с файлом cookie, поскольку файл cookie сохраняет зарегистрированное подтверждение.

Изменение названия файла cookie на web.config, вероятно, решит вашу проблему. Поэтому настройте name и domain в соответствии с двумя разными именами входа, используя два разных имени суффикса cookie.

<authentication mode="Forms">
 <forms ... name=".CookieSuffix" domain="yoururl.com" ... />
</authentication> 
1 голос
/ 23 ноября 2011

Вам необходимо явно указать имена некоторых файлов cookie в вашем файле web.config.Вот некоторые из них, которые обычно требуются:

1) файл cookie аутентификации

<authentication mode="Forms">
<forms name=".ASPXAUTH_YourAppName" ... 

2) файл cookie менеджера ролей

<roleManager cacheRolesInCookie="true" cookieName=".ASPXROLES_YourAppName" .. 

3) файл cookie состояния сеанса

<sessionState cookieName="ASP.NET_SessionId_YourAppName" ... 

Я добавляю уникальный суффикс к имени файла cookie по умолчанию для различных приложений.например, в приведенном выше тексте замените «YourAppName» на что-то уникальное для разных экземпляров приложения.

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