2014-01-21 21 views
0

我正在使用MVC4創建應用程序。我試圖找出如何捕獲當用戶登錄英寸mvc 4如何在用戶登錄時捕獲?

我認爲我可以在賬戶控制器的登錄操作添加一些代碼..

public ActionResult Login(LoginModel model, string returnUrl) 
     { 
      if (ModelState.IsValid && _authProvider.Login(model.UserName, model.Password, true)) 
      { 
       var currentUser = Membership.GetUser(); 

       return RedirectToLocal(returnUrl); 
      } 

      // If we got this far, something failed, redisplay form 
      ModelState.AddModelError("", "The user name or password provided is incorrect."); 
      return View(model); 
     } 

但currentUser總是空?這是爲什麼?我該如何解決它?

感謝

+0

很難說..什麼是_authProvider?這不是MVC提供的。 –

回答

1

Membership.GetUser()不起作用,因爲它使用的HttpContext.Current.Identity檢索用戶,但是這將不會設置,直到下一次刷新頁面。

原因是您的登錄方法很可能使用FormsAuthentication.SetCookie()(或一些變體)來創建驗證票證,但該票證必須在頁面加載時才能讀取以生效。由於當前頁面已在此時加載,所以在下一頁加載之前,驗證無效。

無論如何,我不明白爲什麼你甚至需要這樣做。您已經知道用戶名稱。它就在那裏,你將它傳遞給登錄方法... model.UserName

+0

這是一個很好的觀點......謝謝 – user2206329

相關問題