最新登录日期mvc

时间:2016-07-04 15:23:02

标签: c# asp.net-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);
        }

代码有什么问题?

3 个答案:

答案 0 :(得分:0)

使用时

return View(model);

你实际上是在回复这个

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

在你的情况下:

return View("Login", model);

您要做的是返回登录后用户应该看到的视图:

return View("/ViewThatRequiresLoggedInUser");

答案 1 :(得分: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();

现在它正在运作:)

答案 2 :(得分:-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");
    }