2013-11-27 27 views
5

我使用標準的會員功能在ASP.NET MVC 4ASP.NET MVC 4會員如何「記住我」工作?

我有當用戶登錄成功,一些用戶信息從數據庫中檢索,並把在會話變量中的登錄表單,我在應用程序的某些部分使用。

我的問題是這樣的:

當我激活「記住我」選項,它工作正常,但會話變量將因爲這個實際上是被在登錄驗證過程中加載從來沒有被加載,現在正在跳過。

我的問題是:是否有任何方法來捕捉「記住我」驗證過程,把我的自定義代碼,將加載我需要的會話變​​量? (或者添加更多的信息,「記住我」的cookie,我以後可以使用?)

謝謝

+0

從錯誤中糾正我,你在做什麼是在登錄時返回一個包含一些信息並將其放入會話中的對象。創建auth cookie後,設置過期日期並將其放入響應中。你也可以在web.config中設置表單auth元素的超時時間(假設5天)。現在,您可以通過發送auth cookie來繞過auth。如果這是真的,我相信你的對象應該仍然存儲在會話中?問題是你是否需要這個對象,或者即使使用記住我也需要一個新的對象? – Anton

回答

5

在您的情況,您可以使用Global.asax中的在session_start事件,填補了用戶的信息。

public class Global : System.Web.HttpApplication 
{ 
    protected void Session_Start(object sender, EventArgs e) 
    { 
     if (HttpContext.Current.User != null && 
      HttpContext.Current.User.Identity.IsAuthenticated && 
      HttpContext.Current.Session["MyUserInfo"] == null) 
     { 
      // Get the user's information from database and save it to Session. 
      HttpContext.Current.Session["MyUserInfo"] = "johndoe"; 
     } 
    } 
}