У меня есть два сайта, оба в одном домене, но с разными поддоменами.
site1.mydomain.com site2.mydomain.com
После того, как я аутентифицировался на каждом, я смотрюна куки, включенные в последующий запрос, и они идентичны для каждого сайта.
Однако, если я захожу на первый сайт, а затем перехожу на другой, я ожидаю, что мой файл cookie с сайта 1 будет отправлен вместе с запросом на сайт 2, но это не так.Вот свойства моих файлов cookie.
При входе на сайт 1 этот файл cookie затем существует
Name = MySite
Domain =
Has Keys = False
HttpOnly = False
Path = /
Value = 1C41854066B03D8CC5679EA92DE1EF427DAC65D1BA0E672899E27C57245C1F0B7E93AB01B5563363AB4815A8F4BDE9D293FD261E03F8E60B8497ABBA964D8D315CCE1C8DD220C7176E21DC361935CF6
Expires = 1/1/0001 12:00:00 AM
При входе на сайт 2 эти файлы cookie затем существуют.
Name = MySite
Domain =
Has Keys = False
HttpOnly = False
Path = /
Value = C8C69F87F993166C4D044D33F21ED96463D5E4EB41E1D986BF508DA0CBD5C2CA7D782F59F3BC96871108997E899FF7401C0D8615705BDB353B56C7E164D2302EE6731F41705016105AD99F4E0578ECD2
Expires = 1/1/0001 12:00:00 AM
Я установил домен для каждого (не отображается в файле cookie запроса, так как он необходим только на клиенте).Я удостоверился, что мои настройки форм для каждого идентичны. Я убедился, что мои настройки машинных ключей одинаковы в обеих веб-конфигурациях.
Я не знаю, почему это не работает.Насколько я могу сказать, что файл cookie содержит то, что клиент будет отправлять его для одного субдомена, а не для другого, когда они оба используют одни и те же файлы cookie авторизации?
Пожалуйста, прокомментируйте, если есть ещеИнформация, которую вы хотели бы видеть.Я боролся с этим уже два дня.Согласно этой статье это должно работать.
ОБНОВЛЕНИЕ: код добавлен
Вот мои настройки файла конфигурации для моей аутентификации.Это используется на обоих сайтах.
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn"
defaultUrl="~/Home/Index"
name="MySite"
protection="All"
path="/"
domain="mydomain.com"
enableCrossAppRedirects="true"
timeout="2880"
/>
А вот мой код для создания файла cookie в Site1.
//Add a cookie that the Site2 will use for Authentication
var cookie = FormsAuthentication.GetAuthCookie(userName, true);
cookie.Name = "MySite";
cookie.HttpOnly = false;
cookie.Expires = DateTime.Now.AddHours(24);
cookie.Domain = "mydomain.com";
HttpContext.Response.Cookies.Add(cookie);
HttpContext.Response.Redirect(site2Url,true);
ОБНОВЛЕНИЕ 2:
Я заметил нечто странное во время тестирования.Когда я добавляю cookie в ответ для site1, он добавляется в этот каталог ... C: \ Users \ jreddy \ AppData \ Roaming \ Microsoft \ Windows \ Cookies
Когда я добавляю cookie в ответдля сайта он добавляется в этот каталог ... C: \ Users \ jreddy \ AppData \ Roaming \ Microsoft \ Windows \ Cookies \ Low
Это может быть моей проблемой.Может ли быть так, что один из моих сайтов включен в зону локальной интрасети?
ОБНОВЛЕНИЕ 3: Проблема найдена, решение неизвестно Кажется, что моя проблема связана с тем, что мой второй сайт является частьюлокальной интранет-зоны.Если я захожу на сайт 1 с помощью Firefox, он работает, но я должен ввести свои учетные данные Windows.Если я перехожу через IE, мои учетные данные выбираются автоматически, но файлы cookie не могут быть прочитаны сайтом2.Я могу задать это в другом вопросе.