单独的应用程序共享相同的ASP.Net会话Cookie

时间:2008-11-19 15:11:55

标签: asp.net session ssl cookies

我有两个ASP.Net应用程序驻留在我服务器上的两个不同文件夹中:

  • /Foo< - 这是标准的不安全应用程序
  • /Secure< - 这是一个单独的应用程序,需要IIS通过IIS

问题是默认情况下,ASP.NET_SessionId cookie在域上指定,并在不同目录中的两个应用程序之间共享。我需要会话cookie不同,因为我不能允许/Foo上的被劫持的cookie用于授予对/Secure应用程序的访问权限。

理想情况下,我希望每个应用程序的cookie都受cookie Path属性的限制。显然没有办法在.Net中开箱即用。

另外一个令人头疼的问题是,即使我编写自定义代码来设置cookie路径,我也担心某些浏览器区分大小写并且不会对/Foo和{{1}使用相同的会话cookie },这取决于链接的构建方式,可以在同一个应用程序中产生多个会话。

有没有人遇到并克服了这个问题?

4 个答案:

答案 0 :(得分:10)

在.Net 2.0及更高版本中,您可以将web.config中“sessionState”XML元素的“cookieName”属性设置为每个应用程序的不同值。这将使他们不使用相同的会话ID。

Here's the MSDN reference for this.

答案 1 :(得分:1)

如果您使用表单身份验证,则还需要在web.config中更改表单cookie:

<forms name="Foo"...
<forms name="Secure"...

答案 2 :(得分:0)

听起来他们只是在单独的虚拟目录中,但仍然在同一个应用程序池中。如果您确实希望应用程序是独立的,请尝试为您的/安全应用程序创建另一个应用程序池。

答案 3 :(得分:0)

检查IIS中/Secure文件夹的图标。

如果它有一个cog图标,那么它是一个单独的应用程序,会话应该是不同的,应用程序将在它自己的appdomain中运行。

如果它是一个地球图标,那么它就是一个虚拟目录,并将与根网站和/Foo共享同一会话。