簡體   English   中英

會話超時時重定向到兩個不同的登錄屏幕之一,具體取決於查詢字符串

[英]on Session time out redirect to one of two different log in screens dependent on query string

我有一個歷史古跡,它被惰性破壞並且正在被替換。 在替換站點准備就緒之前,我必須維護該站點。

問題是我有一個站點需要了解已登錄用戶的組代碼。 例如,我有兩個組Group1和Group2。

默認情況下,在登錄頁面上是... / login.aspx,它將存儲在會話中(組= Group1),如果使用的話,將使用... / login.aspx?group =然后,Group2將Group2存儲在會話中。

之所以這樣做,是因為它是一個非常復雜的身份驗證登錄屏幕,並且需要為多個會話變量設置站點,因此我的時間還沒有到。 說這意味着在此階段不能選擇替換登錄頁面。

我需要的一種方法是,當會話超時時,將用戶定向到登錄頁面的正確變體,並記住他們所在的頁面,以便可以將其返回到此頁面。

最小的解決方案是讓他們重定向回正確的登錄版本,辭職后返回到他們所在的頁面只是“希望”功能。

任何人都可以向我指出如何執行此操作的正確方向,因為會話在該時間點結束,所以on Session結束事件似乎不起作用,因此沒有可比的東西。

如果您可以編輯登錄頁面,請在登錄成功后將其存儲在cookie group1或group2中。 登錄頁面加載后,檢查是否存在您的組cookie。 如果有一個,則可以將其重定向到適當的登錄URL。

我認為您將無法執行此操作。

如您所述,在Session_End事件中(大概您正在使用InProc會話來觸發此事件)-沒有會話可以弄清楚用戶所在的組。即使您可以獲取會話變量,也沒有HttpContext。在Session_End事件中,因為它發生在服務器上,沒有Http請求-因此您將無法重定向。

當站點位於屏幕上時,可能會觸發此事件,此時“表單身份驗證”將重定向回登錄屏幕,或者可能在用戶關閉瀏覽器很長時間之后發生。

編輯-需要更多信息

您是否正在為應用程序使用InProc會話和表單身份驗證?

如果是這樣,一種可能的解決方案是創建一個可以在FormsAuthentication識別請求中的會話/身份Cookie已過期並重定向回登錄之前運行的HttpModule。

正如Blam所說的-如果您將信息存儲在另一個數據存儲中-您可以從HttpModule處獲得此信息,並從那里進行自定義重定向。

請注意,HttpModule將針對每個請求運行,因此任何Db調用等都可能會浪費性能。

但是您確實有SessionID。 在數據庫或其他存儲中,將SessionID與組關聯。

HttpSessionState.SessionID屬性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM