2009-12-28 97 views
1

我們爲客戶提供私人網站。客戶經常告訴我們他們看到了另一個用戶的檔案。ASP.NET會話切換

我們的身份驗證過程如下所示: 憑證 - >檢查數據庫表 - >用戶ID保存在會話中。

據我所知,用戶以某種方式切換到另一個用戶的會話。任何人都可以爲其命名至少一種可能性嗎?

+0

正如你所解釋的那樣,用戶不應該有可能獲得彼此的會話。但也許你應該發佈一些代碼。 – driis 2009-12-28 11:40:33

+0

如果你可以發佈一些代碼,它可能會有所幫助。 – RickNZ 2009-12-30 00:16:06

+0

這裏有類似的問題。試試看那裏提出的解決方案。 http://stackoverflow.com/questions/1646274/asp-net-session-mix-up-using-stateserver-scary – Pedro 2009-12-28 11:39:53

回答

2

當在頁面上啓用輸出緩存時,會緩存整個HTTP響應,包括響應標頭。這意味着設置會話cookie的HTTP頭也可以緩存在那裏。

確保在任何設置用戶特定cookie的頁面上禁用輸出緩存。請注意,禁用內核模式緩存是不夠的 - 整個響應也由ASP.NET運行時單獨緩存。

但是,您仍然可以安全地在這些頁面上啓用客戶端緩存(如果適用)(Location="Client")。

+0

我很抱歉,但我無法找到關閉此輸出緩存的方式。你能把門給我看嗎? – 2009-12-29 14:21:32

+0

在* .aspx文件的頂部是否有'<%@ OutputCache%>'指令?或者你是否在頁面或其使用的任何控件或主頁面的後面的代碼中對Response.Cache對象進行調用? – RickNZ 2009-12-30 00:14:31

1

聽起來好像您正在將配置文件數據保存在靜態變量中。此外,你永遠不應該實現你自己的認證機制,而應該基於內置的asp.net表單認證。已經有內置支持sql server based authentication