2008-11-19 163 views
6

我有我的服務器上駐留在兩個不同的文件夾2個ASP.Net應用程序:不同的應用程序共享相同的ASP.Net會話Cookie

  • /Foo < - 這是標準的不安全應用
  • /Secure < - 這是一個獨立的應用程序需要SSL由IIS

的問題是,在默認情況下,該ASP.NET_SessionId cookie被在域指定並共享在不同目錄中的兩個應用程序之間。我需要會話cookie不同,因爲我不能允許使用/Foo上的劫持cookie來授予對/Secure應用程序的訪問權限。

理想情況下,我希望每個應用程序的Cookie都受Cookie Path屬性的限制。開箱即用的.Net顯然無法做到這一點。

作爲一個令人頭疼的問題,即使我編寫自定義代碼來設置cookie路徑,我擔心某些瀏覽器區分大小寫,並且不會使用/Foo/foo的相同會話Cookie,這取決於鏈接已建立,可能導致同一應用程序中有多個會話。

有沒有人遇到並克服過這個問題?

回答

9

在.Net 2.0及以上版本中,您可以將web.config中「sessionState」XML元素的「cookieName」屬性設置爲每個應用程序的不同值。這將阻止他們使用相同的會話ID。

Here's the MSDN reference for this.

+0

新的鏈接http://msdn.microsoft.com/en-我們/庫/ h6bb9cz9(v = VS.80)的.aspx – Palani 2012-11-10 08:32:08

0

聽起來像他們只是在單獨的虛擬目錄,但仍然在同一個應用程序池。如果您確實希望將這些應用程序分開,請嘗試爲您的/ secure應用程序創建另一個應用程序池。

0

檢查IIS中/Secure文件夾的圖標。

如果它有一個cog圖標,那麼它是一個單獨的應用程序,會話應該不同,應用程序將運行在它自己的appdomain中。

如果它是地球儀圖標,那麼它是一個虛擬目錄,並將與根站點和/Foo共享相同的會話。

1

如果您使用窗體身份驗證,則還需要更改cookie的形式在web.config中:

<forms name="Foo"... 
<forms name="Secure"... 
相關問題