2011-05-16 141 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