Page.User.Identity.Name пуст на страницах поддоменов - PullRequest
1 голос
/ 19 апреля 2010

У меня есть несколько поддоменов, пытающихся использовать один поддомен для проверки подлинности с использованием проверки подлинности с помощью форм, работающей на Windows Server 2008 r2.

Все страницы аутентификации форм настроены на использование одного и того же имени, и на странице аутентификации cookie добавляется со следующим фрагментом:

 FormsAuthentication.SetAuthCookie(txtUserName.Text, false);
 System.Web.HttpCookie MyCookie = System.Web.Security.FormsAuthentication.GetAuthCookie(User.Identity.Name.ToString(), false);
 MyCookie.Domain = ConfigurationManager.AppSettings["domainName"];
 Response.AppendCookie(MyCookie);

Когда я захожу на signon.mysite.com, свойства page.user.identity.isauthenticated и page.user.identity.name работают нормально. Когда я перехожу на subdomain.mysite.com, page.user.identity.isauthenticated возвращает true, но имя пусто.

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

 HttpCookie cookie = Request.Cookies[".ASPXAUTH"];
 FormsAuthenticationTicket fat = FormsAuthentication.Decrypt(cookie.Value);
 user2_lbl.Text = fat.Name;

При поиске проблемы я обнаружил, что некоторые люди говорят, что что-то должно быть добавлено в global.asax, а другие говорят, что в этом нет необходимости.

Цель состоит в том, чтобы иметь возможность войти в поддомен аутентификации и получить доступ к идентификатору пользователя с корневого сайта и других поддоменов. Ключи машины совпадают во всех файлах web.config, и AppSettings ["domainName"] в настоящее время имеет значение "mysite.com".

Кто-нибудь знает, что мешает мне получить доступ к пользовательской информации?

1 Ответ

4 голосов
/ 19 апреля 2010

Измените «mysite.com» на «.mysite.com» (обратите внимание на начальный «.»).

Это сообщит браузеру, что cookie действителен и для поддоменов.

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