public async Task <ActionResult> Login(LoginVM vm) { if (Wtm.ConfigInfo.IsQuickDebug == false) { var verifyCode = HttpContext.Session.Get <string>("verify_code"); if (string.IsNullOrEmpty(verifyCode) || verifyCode.ToLower() != vm.VerifyCode.ToLower()) { vm.MSD.AddModelError("", Localizer["Login.ValidationFail"]); return(View(vm)); } } var user = await vm.DoLoginAsync(); if (user == null) { return(View(vm)); } else { Wtm.LoginUserInfo = user; string url = string.Empty; if (!string.IsNullOrEmpty(vm.Redirect)) { url = vm.Redirect; } else { url = "/"; } AuthenticationProperties properties = null; if (vm.RememberLogin) { properties = new AuthenticationProperties { IsPersistent = true, ExpiresUtc = DateTimeOffset.UtcNow.Add(TimeSpan.FromDays(30)) }; } var principal = user.CreatePrincipal(); await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal, properties); return(Redirect(HttpUtility.UrlDecode(url))); } }