2016-07-04 119 views
0

上次用戶登入時代碼正在運作並儲存下來,但問題是我無法登入。當您嘗試登入時,它會加載一小段時間,然後您仍然看到登錄視圖不是你應該看到的視圖(登錄成功後)。最近登入日期mvc

// GET: /Account/Login 
    [AllowAnonymous] 
    public ActionResult Login(string returnUrl) 
    { 
     ViewBag.ReturnUrl = returnUrl; 
     return View(); 
    } 

    // 
    // POST: /Account/Login 
    [HttpPost] 
    [AllowAnonymous] 
    [ValidateAntiForgeryToken] 
    public async Task<ActionResult> Login(LoginViewModel model, string returnUrl, ApplicationUser app) 
    { 
     if (!ModelState.IsValid) 
     { 

      app = db.Users.SingleOrDefault(u => u.UserName == model.Email); 
      app.Lastloggedin = DateTime.Now; 
      db.Entry(app).State = EntityState.Modified; 
      db.SaveChanges(); 

      return View(model); 
     } 

代碼有什麼問題?

回答

-1

驗證用戶具有正確的憑據後,應該返回/重定向到登錄模型,而不是登錄模型。

if (!ModelState.IsValid) 
    { 

     app = db.Users.SingleOrDefault(u => u.UserName == model.Email); 
     app.Lastloggedin = DateTime.Now; 
     db.Entry(app).State = EntityState.Modified; 
     db.SaveChanges(); 

     return RedirectToAction("SignedIn"); 
    }  
+0

你能解釋更多或寫正確的代碼?我理解你想告訴我的一點點,但是看不到我腦子裏正確的代碼:/ – Daniel

0

當您使用

return View(model); 

你其實

return View("name of the current method/view", model); 

而且你的情況恢復這樣的:

return View("Login", model); 

你想要做的是返回查看用戶在登錄後應該看到的內容:

return View("/ViewThatRequiresLoggedInUser"); 
0
[HttpPost] 
    [AllowAnonymous] 
    [ValidateAntiForgeryToken] 
    public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) 
    { 
     if (!ModelState.IsValid) 
     { 

      return View(model); 
     } 

     ApplicationDbContext db = new ApplicationDbContext(); 
     ApplicationUser logged = db.Users.SingleOrDefault(u => u.UserName == model.Email); 
     logged.Lastloggedin = DateTime.Now; 
     db.Entry(logged).State = EntityState.Modified; 
     db.SaveChanges(); 

現在,它的工作:)