单个站点上的多个应用程序 - 会话和表单身份验证范围

Joh*_*nCC 4 asp.net iis forms-authentication virtual-directory session-cookies

我们正在使用ASP.NET和IIS 6.0.我意识到应用程序,网站和虚拟目录的定义在IIS 6中定义不明确,并且在IIS 7中发生了很大变化.但是,我现在仍然坚持使用IIS 6.0.

我们在IIS中定义了一个网站,在虚拟目录中有许多单独的子网站.

该计划如下: -

http://site.example.com/site1
http://site.example.com/site2
.. etc ..
Run Code Online (Sandbox Code Playgroud)

site1,site2,...是IIS 6.0中"默认网站"下的虚拟目录.

我需要在大多数这些站点中使用ASP.NET会话和表单身份验证,我不希望它们共享身份验证数据或会话信息.

这两种机制目前都依赖于cookie.但是,默认情况下创建的cookie使用相同的名称,并且在浏览器中具有"/"路径,这意味着站点的cookie将相互冲突.

在不更改每个cookie的默认名称的情况下,如何在我的子站点之间强制分离?我是否需要更改IIS 6"应用程序"的虚拟目录?或者代码中是否有某种方法可以强制执行更有限的Cookie范围?

提前致谢.

ice*_*ava 9

对于Forms身份验证,您可以定义FormsCookiePath属性以反映每个子站点的虚拟目录.

http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.formscookiepath.aspx

对于会话状态,我没有看到任何可以定义路径的内容,但您可以从标准cookieName ="ASP.NET_SessionId"值中定义不同的cookie名称.这样每个子站点都在寻找不同的会话cookie.

http://msdn.microsoft.com/en-us/library/h6bb9cz9(v=VS.100).aspx