我有多个子域尝试使用单个子域进行验证,并使用在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”。
有谁知道是什么阻止我访问用户信息?
答案 0 :(得分:4)
将“mysite.com”更改为“.mysite.com”(注意领先的“。”)。
这将告诉浏览器cookie也适用于子域名。