主要问题是您的身份服务器放置什么类型的 cookie,它看起来像您的服务器放置和特定于域的 cookie,而不是通配符。
Cookie 域
用于身份验证的 cookie 的常见问题是 cookie 的域。与 cookie 的路径类似,如果 cookie 是在两个不同的子域上创建的,那么 cookie 只能在创建它的域上访问。例如,您的主应用程序可能在 www.domain.com 上,但您在 cs.domain.com 上运行了 Telligent Evolution。如果您在 www.domain.com 上创建 cookie,浏览器只会将其发送到该域,并且在导航到 cs.domain.com 时不会传递。
可以通过将域设置为“.domain.com”来保留 cookie。Cookie 不使用常见的“*”通配符。只需使用“.domain.com”。使用此条目,浏览器在转到 cs.domain.com 时也不会传递 cookie。
与路径一样,域可以在 web.config 中或通过代码指定。在设置 web.config 文件时,它只会检查授权 cookie。您必须进行此设置,站点才能正确识别新的域级别 cookie:
<authentication mode="Forms">
<forms name=".CommunityServer" ... domain=".domain.com" />
</authentication>
FormsAuthentication.SetAuthCookie 方法会忽略“域”名称,因此您必须在创建 AuthCookie 时在登录页面上手动设置它。例如:
HttpCookie cookie = FormsAuthentication.GetAuthCookie(username, true);
cookie.Domain = ".domain.com";
Response.Cookies.Add(cookie);