子域名页面上的Page.User.Identity.Name为空

时间:2010-04-19 14:59:12

标签: c# asp.net iis-7 forms-authentication

我有多个子域尝试使用单个子域进行验证,并使用在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,bue名称为空。

我尝试使用以下内容从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 个答案:

答案 0 :(得分:4)

将“mysite.com”更改为“.mysite.com”(注意领先的“。”)。

这将告诉浏览器cookie也适用于子域名。