2011-05-16 101 views
1

我读了一千个文档,但没有为我工作。通过子域共享会话状态

1)我想:我的服​​务器端我用下面的变量:

(string)Session["myData"] 

2)当我改变了子域

www.myDomain.com/myPage.aspx 
OR 
myDomain.com/myPage.aspx 
OR 
myUser.myDomain.com/myPage.aspx 

我的问题:我松会话数据,当我从一个域转到另一个时。

3)我想保持会话状态只能用饼干和INPROC模式:

<sessionState mode="InProc" cookieless="UseCookies" cookieName="myDomain.com" timeout="10000">  </sessionState> 
    <authentication mode="Windows"/> 

我在web.config中补充说:

<httpCookies domain="myDomain.com" /> 

<httpCookies domain=".myDomain.com" /> 

<httpCookies domain=".myDomain.com" httpOnlyCookies="true" /> 

但没有任何工作。

感谢您的任何建议。

回答

1

简短的回答,你不能满足你所​​有的标准。

可能的解决方案:

  • 重定向以 “xxx.myDomain.com” 呼入域到一个共同的 “www.myDomain.com” 的任何请求。这可能涉及将“myUser.myDomain.com”更改为“www.myDomain.com/default.aspx? & user = myUser”。因为这是一个重定向,您的用户会在他的栏中看到地址变化,因此会获得一些关于网站后面香肠制作的知识(对攻击者有用)。
  • 切勿从您的网站中明确引用您的域名。所有的URI都应该相对于你的网络结构的根。这应该允许您避免更改域,从而失去会话状态。
  • 使用SQLServer管理会话状态:http://support.microsoft.com/kb/2527105。这需要将您的会话处理从InProc与Cookie改为SQLServer,以及其他一些配置更改。
+0

感谢您的回答......这正是我所关心的。如果没有人有一个棘手的解决方案,我会给你的投票。 – Zitun 2011-05-16 20:20:57