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

Я установил два приложения ASP.NET на машине, их файлы web.config содержат одно и то же значение applicationName в элементе AspNetSqlMembershipProvider, поэтому они используют общих пользователей и роли.

Последовательность проблем такова:

  • пользователь входит в приложение A,
  • открывает новую вкладку в браузере
  • входит в приложение B,
  • его логин в приложении А вышел из системы

и наоборот.

Должен ли я использовать другой подход к обмену информацией для входа между двумя приложениями?


person Axarydax    schedule 16.03.2010    source источник
comment
Используете ли вы один и тот же базовый URL для обоих приложений? например, www.site.com/app1 — это www.site.com/app2 или www.othersite.com/   -  person Aristos    schedule 22.03.2010


Ответы (2)


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

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

Вероятно, решение находится в файле web.config.

В конфигурации

Измените значение имени на другое в ваших 2 приложениях, если у вас один и тот же домен и вы работаете в разных каталогах/приложениях, или также измените значение домена, которое также использовалось сохранить печенье.

<authentication mode="Forms">
 <forms name=".CookieSuffix" domain="yoururl.com" ... />
</authentication>    

Например, в двух разных файлах web.config ваших приложений поместите
в приложение 1: name=".app1"
в приложение 2: name=".app2 "

Или в приложении 1: domain="app1.yoururl.com"
в приложении 2: domain="app2.yoururl.com"
, если вы разделяете ваши приложения, на основе URL-адреса или даже попробуйте некоторые аналогичные действия.

Файл cookie сохраняется, используя имя файла cookie в имени домена, поэтому это 2 значения, которые вы должны попытаться разделить.

Подробности о настройке формы можно найти здесь: http://msdn.microsoft.com/en-us/library/aa480476.aspx

Ручной вход

Если у вас есть возможность войти в систему вручную, решение находится в этой функции.

FormsAuthentication.GetAuthCookie(cUserName, false, "cookiePath");
FormsAuthentication.SetAuthCookie(cUserName, false, "cookiePath");

Вам нужно только использовать другой cookiePath, но вы должны изменить многие точки в своей программе и зафиксировать вход в систему, выход из системы и аутентификацию.

Надеюсь, это поможет вам.

person Aristos    schedule 22.03.2010
comment
Это хорошо сработало для нас в ситуации, когда у нас были параллельные веб-сайты TEST и DEV на одном сервере, но они указывали на разные базы данных aspnet, и мы хотели принудительно выполнить повторную аутентификацию при открытии новой вкладки (чего не произошло) . Как правило, вы должны войти в URL-адрес DEV, открыть новую вкладку и скопировать и вставить URL-адрес, измените его на TEST URL (тот же веб-сервер, аналогичный URL-адрес), и вы автоматически войдете в систему на второй вкладке (не идеально в нашем случае). Установка одного имени = .TEST и установка другого имени = .DEV решила нашу проблему. Примечание: в нашем случае нам не нужно было устанавливать домен. - person Jeff Mergler; 07.06.2017

Вам следует ознакомиться с этим руководством.

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

person Theresa    schedule 16.03.2010
comment
Спасибо, мой пользовательский магазин отлично работает с несколькими приложениями, проблема в том, что при входе в приложение A пользователь выходит из приложения B. - person Axarydax; 16.03.2010