2013-10-21 120 views
1

當用戶從我的mvc應用程序註銷時,我必須恢復LogIn Id文本框,但在註銷操作中,我正在執行FormAuthentication.Signout(),然後是session.clear()和session.abandon(),所以當我註銷時,我無法獲得剛纔註銷的用戶登錄ID ..如何獲得該用戶登錄ID時,他註銷?如何在mvc註銷後獲取用戶登錄ID

+0

請參閱http://stackoverflow.com/questions/1064271/asp-net-mvc-set-custom-iidentity-or-iprincipal/1064345#1064345 – haim770

+0

註銷和會話清除之前,獲取該用戶標識和將它存儲在某個地方。如果您想在應用程序中爲用戶註銷執行某些操作,則最好在會話清除前執行該操作。 – 111

回答

2

您應該在其他地方保存登錄信息,例如在cookie中。甚至可能在初次登錄時(而不是在註銷時)。

因此,當用戶登錄時,您可以使用「long」持久性(可能持續幾個月)將id保存到某個cookie中,但不會在任何邏輯中使用此cookie。

如果「稍後」呈現未經過身份驗證的頁面 - 您可以檢查cookie並將cookie內容寫入登錄框。

+0

+1。爲了解決安全和隱私方面的問題,您只應該這樣做,即用戶選中「在此計算機上記住我」複選框。 –

1

如果您只需要用戶標識顯示用戶註銷後的登錄視圖,只需在刪除會話之前獲取標識並進行註銷。

然後,把它的TempData:

TempData["LastUserId"] = theId; 

然後,您可以重定向到登錄行動......和登錄動作中,你可以訪問該用戶ID從TempData的取回:

var userId; 
if(TempData["LastUserId"] != null){ //if the user is coming directly to login, it will be null. 
userId = TempData["LastUserId"]; 
} 
相關問題