上次用户登录时代码正在运行并保存下来,但问题是我无法登录。当您尝试登录时,它会在短时间内加载仍然看到登录视图不是你应该看到的视图(当登录成功时)。
// 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);
}
代码有什么问题?
答案 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");
}