Asp.net

共享相同 ASP.Net 會話 Cookie 的不同應用程序

  • October 6, 2012

我有兩個 ASP.Net 應用程序駐留在伺服器上的兩個不同文件夾中:

  • /Foo<– 這是標準的不安全應用程序
  • /Secure<– 這是一個單獨的應用程序,需要 IIS 使用 SSL

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

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

更令人頭疼的是,即使我編寫自定義程式碼來設置 cookie 路徑,我也擔心某些瀏覽器區分大小寫並且不會對 and 使用相同的會話 cookie /Foo/foo這取決於連結的建構方式,可以導致同一應用程序中的多個會話。

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

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

這是 MSDN 參考。

檢查/SecureIIS 中文件夾的圖示。

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

如果它是一個地球圖示,那麼它就是一個虛擬目錄,將與根站點共享相同的會話,並且/Foo.

引用自:https://stackoverflow.com/questions/302181