Несколько приложений используют одну и ту же базу данных для входа - PullRequest
7 голосов
/ 16 марта 2010

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

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

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

и наоборот.

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

Ответы [ 2 ]

15 голосов
/ 22 марта 2010

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

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

Возможно, решение находится на web.config.

On Config

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

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

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

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

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

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

Ручной вход

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

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

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

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

0 голосов
/ 16 марта 2010

Вы должны проверить этот урок.

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

...