问题描述
假设有两个站点:book.test.com和vod.test.com,设想在book.test.com网站上登录后,跳转到vod.test.com网站上时不需要再登录。在本机测试时,修改hosts文件内容如下:127.0.0.1book.test.com127.0.0.1vod.test.com具体操作如下:第一步、修改book网站中的web.config文件如下:<authenticationmode="Forms"><formsdefaultUrl="~/login.aspx"domain=".test.com"slidingExpiration="true"></forms></authentication><machineKeyvalidationKey="969CDD5D85E13827ADFF3E80771472F11B3D454930D39DA19399AB714F596CA98B2D10D47E911990E2491211550E42FE676859CD4925F4028076DD6262A62F80"decryptionKey="5300D71269AC1D709C42E1A96E636EED0ABFF655C05CAEB6C64BA9EAEF9A88C3"validation="SHA1"decryption="AES"/><authorization><denyusers="?"/></authorization><httpCookiesdomain=".test.com"/>
第二步、在book网站上添加login.aspx文件,在该文件上直接登录,代码如下:System.Web.Security.FormsAuthenticationTicketticket=newSystem.Web.Security.FormsAuthenticationTicket(1,"UserId",DateTime.Now,DateTime.Now.AddMinutes(30),false,"teacher");stringEncrTicket=System.Web.Security.FormsAuthentication.Encrypt(ticket);HttpCookiemyCookie=newHttpCookie(System.Web.Security.FormsAuthentication.FormsCookieName,EncrTicket);System.Web.HttpContext.Current.Response.Cookies.Add(myCookie);
第三步、修改vod网站上的web.config文件,如下:<authenticationmode="Forms"><formsdomain=".test.com"slidingExpiration="true"></forms></authentication><machineKeyvalidationKey="969CDD5D85E13827ADFF3E80771472F11B3D454930D39DA19399AB714F596CA98B2D10D47E911990E2491211550E42FE676859CD4925F4028076DD6262A62F80"decryptionKey="5300D71269AC1D709C42E1A96E636EED0ABFF655C05CAEB6C64BA9EAEF9A88C3"validation="SHA1"decryption="AES"/><authorization><allowusers="?"/></authorization><httpCookiesdomain=".test.com"/>
第四步、在vod网站上创建Default.aspx,在代码中判断是否登录,以及输出cookies信息,代码如下:Label1.Text="用户是否已经进行了身份验证:"+HttpContext.Current.User.Identity.IsAuthenticated.ToString()+"<br/>";Label1.Text+="一共有"+Request.Cookies.Count.ToString()+"个cookies<br/>";for(inti=0;i<Request.Cookies.Count;i++){Label1.Text+="Name:"+Request.Cookies[i].Name+"<br/>";Label1.Text+="Value:"+Request.Cookies[i].Value+"<br/><br/>";}
经测试,在本机上运行无误。从book.test.com跳转到vod.test.com网站后,可以看到用户身份已验证。也能输出cookies的内空。但是,上传到服务器上(book和vod分别为两台不同电脑)之后,从book跳到vod后,页面输出为:用户是否已经进行了身份验证:False一共有0个cookies在chrome浏览器中,按f12可以查看到.test.com域中的cookies,但在vod的网页中获取不到身份验证的cookies。请问这是怎么回事?
解决方案
解决方案二:
该回复于2014-12-06 19:46:01被版主删除