2010-03-24 42 views
3

在我的網站中,我實現了自定義會話值。其中,在登錄時我將會話值設置爲某個對象。該對象用於從db中提取用戶特定的數據。跨子域的ASP.NET MVC會話

現在的問題是如果用戶使用:test1.somesite.com登錄並註銷並再次登錄:test2.somesite.com,該用戶仍在接收來自test1.somesite.com特定對象的數據。

這一點是任何站點用戶第二次登錄時,如果他登錄另一個子域,他總是從以前的子域登錄中獲取數據。 ()),通過把HttpContext.session [「UserDetail」] = null,HttpContext.Session.Abandon()以及HttpContext.Session.Clear()來清除所有會話;

,但似乎沒有任何工作

,我也沒有太多的想法會話變量是如何通過子域處理。

我的意思是如果我通過訪問test1.somesite.com初始化一個會話的值,如果在同一臺計算機上並且在同一瀏覽器上,我也會打開test2.somesite.com,該值也可見。

請任何幫助

+0

Do HttpContext.Session.SessionId的匹配嗎? – mxmissile 2010-03-24 04:05:55

+0

你用於會話提供者的是什麼?應用?數據庫?一些共享服務? – Pharcyde 2012-02-14 17:05:03

回答

1

聽起來像一個cookie問題。嘗試清除會話cookie。沿線的東西:

if (!User.Identity.IsAuthenticated) 
{ 
    if (Request.Cookies["ASP.NET_SessionId"] != null) 
    { 
     Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddDays(-1); 
    } 
    Session.Abandon(); 
} 
0

你需要做的是設置你的asp.net會話ID cookie寫入通配符域。

Response.Cookies( 「ASP.NET_SessionId」)。域= 「yourdomain.com」 //或 「* .yourdomain.com」

這樣的cookie可以浮到你的子域。

+0

我認爲他不希望發生這種情況 – Pharcyde 2012-02-14 17:03:12