我正在asp.net建立一个网站,并有多个子域名.例如,
one.cookies.com
two.cookies.com
one.cookies.com
two.cookies.com
我希望我的用户能够登录到两个子域,并登录两个网站.此外,我希望会话和Cookie同步.到目前为止,我还没有找到可靠的方法来做到这一点.
解决方法
创建cookie时,您可以设置域:
HttpCookie cookie = new HttpCookie("name","value"); cookie.Domain = "cookies.com";
这将允许您的cookie可从cookies.com的所有子域访问.
如果您正在使用FormsAuthentication,那么您可以在web.config中设置auth cookie的域:
<forms name=".ASPXAUTH" loginUrl="login.aspx" defaultUrl="default.aspx" protection="All" timeout="30" path="/" requireSSL="false" domain="cookies.com"> </forms>
请记住,要使单个登录工作在多个子域上,您的ASP.NET应用程序必须共享与本CodeProject article中所述相同的machine keys.
不同子域(不同的工作进程)之间的共享会话更加困难,因为会话被限制在一个应用程序中,您将必须实现自定义的会话同步机制.