我想在一个域下托管多个网站。但目前我正在使用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>
我错过了什么?
答案 0 :(得分:3)
看起来你的cookie doamin没有正确设置。
尝试这样的事情:
authCookie.Domain = ".something.com"
注意“。”在域名前面,这就是什么使它适用于something.com的任何子域。