将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访问到子域

您的cookie域名设置不正确。

试试这样写:

authCookie.Domain = ".something.com"

请注意域名前面的"。",这使得它适用于something.com的任何子域名。