将Cookie访问到子域
本文关键字:访问 Cookie | 更新日期: 2023-09-27 18:13:50
我想在一个域下托管多个站点。但目前我在本地主机上工作,所以我添加了这2行到我的etc/hosts文件:
127.0.0.1 something.com
127.0.0.1 orders.something.com
有2个应用程序托管在IIS。一个可以使用orders.something.com/OrdersSSO
浏览,另一个可以使用something.com/SSOSample/
浏览。
我使用something.com/SSOSample/
中的代码创建了身份验证cookie:
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
"abc",
DateTime.Now,
DateTime.Now.AddMinutes(30), // value of time out property
true, // Value of IsPersistent property
String.Empty,
FormsAuthentication.FormsCookiePath);
string encryptedTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie authCookie = new HttpCookie(
FormsAuthentication.FormsCookieName,
encryptedTicket);
Response.Cookies.Add(authCookie);
我登录了这个应用程序。但是,当我浏览orders.something.com/OrdersSSO时,我没有得到我的身份验证cookie。
这是我在web.config中的表单部分:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" enableCrossAppRedirects="true" timeout="2880" domain=".something.com" />
</authentication>
我错过了什么?
您的cookie域名设置不正确。
试试这样写:
authCookie.Domain = ".something.com"
请注意域名前面的"。",这使得它适用于something.com的任何子域名。