将Cookie访问到子域

时间:2011-11-09 10:13:12

标签: c# asp.net

我想在一个域下托管多个网站。但目前我正在使用localhost,所以我将这两行添加到我的etc / hosts文件中:

127.0.0.1 something.com
127.0.0.1 orders.something.com

IIS中托管了2个应用程序。可以使用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>

我错过了什么?

1 个答案:

答案 0 :(得分:3)

看起来你的cookie doamin没有正确设置。

尝试这样的事情:

authCookie.Domain = ".something.com"

注意“。”在域名前面,这就是什么使它适用于something.com的任何子域。