2013-03-21 20 views
2

我們的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.UserNameVirtualWepApp1, 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。我已經繼承了這種虛擬應用程序的結構/體系結構。

+1

正如我以爲這是不可能的從一個地方清除所有應用程序池的會話。這實際上是預期的行爲。主要原因在於安全性 - 從其他應用程序池修改應用程序池狀態的能力將爲各種攻擊打開大門,特別是在多租戶託管環境中。 – itGru 2013-04-24 15:56:57

回答

0

應用程序池的主要目標是(等等)到您的應用程序隔離,從而可能的(推薦的解決方案)將信號的每個應用程序執行所期望的註銷:

System.Web.Security.FormsAuthentication.SignOut(); 

如何?

創建一個HTTP Handler(保證安全限制它訪問調用者允許的主機/ IP或/和在請求上使用加密的密鑰),在當前應用程序中調用簽名時禁用該用戶。

然後當你登出你可以包括剩餘的應用程序的調用(信號)的一個應用程序註銷處理程序傳遞用戶信息(密鑰等)。

This答案也適用於您的需求。

相關問題