我们的Web应用程序(asp.net 4.0)
对IIS (7.5/8.0)
如何清除主Web应用程序和虚拟子应用程序中的会话? (ASP.NET)
-MainWebApp (application pool: MainWebApp)
--VirtualWepApp1 (application pool: VirtualWepApp1)
--VirtualWepApp2 (application pool: VirtualWepApp2)
--VirtualWepApp3 (application pool: VirtualWepApp3)
单一登录页面位于MainWebApp
以下结构。用户相关的数据被存储在会话并且每当用户访问那些虚拟应用程序下资产(.NET页)在基于所述HttpContext.Current.Profile.UserName
的VirtualWepApp1, VirtualWepApp2, VirtualWepApp3
重新创建。问题,我们正面临着用户没有完全从系统中注销,如果他/她穿过MainWebApp/logout
页面。
围绕我做的工作是:
- create logout page for every application with Session.Abandon() and System.Web.Security.FormsAuthentication.SignOut()
- the logout link goes to the VirtualWepApp3/logout
- from VirtualWepApp3/logout redirect to VirtualWepApp2/logout
- from VirtualWepApp2/logout redirect to VirtualWepApp1/logout
- from VirtualWepApp1/logout redirect to MainWebApp/logout
其他的解决办法是把所有应用程序相同的应用程序池下,但是这 - 由于一些其他编码的困难 - 没有,没有。
问题:有没有简单的方法来清除会话/注销用户从所有应用程序(主要和虚拟)?
-
PS。我已经继承了这种虚拟应用程序的结构/体系结构。
正如我以为这是不可能的从一个地方清除所有应用程序池的会话。这实际上是预期的行为。主要原因在于安全性 - 从其他应用程序池修改应用程序池状态的能力将为各种攻击打开大门,特别是在多租户托管环境中。 – itGru 2013-04-24 15:56:57