public IActionResult Index(string returnUrl = null) { ViewData["Title"] = "Login"; ViewData["ReturnUrl"] = returnUrl; var model = new LoginViewModel(); if (!string.IsNullOrEmpty(signinManager.AuthSettings.RecaptchaPublicKey)) { model.RecaptchaSiteKey = signinManager.AuthSettings.RecaptchaPublicKey; } return View(model); }
public async Task<IActionResult> Index(LoginViewModel model, string returnUrl = null) { ViewData["Title"] = "Log in"; ViewData["ReturnUrl"] = returnUrl; if (!string.IsNullOrEmpty(signinManager.AuthSettings.RecaptchaPublicKey)) { model.RecaptchaSiteKey = signinManager.AuthSettings.RecaptchaPublicKey; } if (!ModelState.IsValid) { return View(model); } if (!string.IsNullOrEmpty(signinManager.AuthSettings.RecaptchaPublicKey)) { var recpatchaSecretKey = signinManager.AuthSettings.RecaptchaPrivateKey; var captchaResponse = await ValidateRecaptcha(Request, recpatchaSecretKey); if (!captchaResponse.Success) { ModelState.AddModelError("recaptchaerror", "reCAPTCHA Error occured. Please try again"); return View(model); } } var authUser = signinManager.GetUser(model.UserName); if(authUser == null) { ModelState.AddModelError(string.Empty, "Invalid login attempt."); return View(model); } var isValid = signinManager.ValidatePassword(authUser, model.Password); if(!isValid) { ModelState.AddModelError(string.Empty, "Invalid login attempt."); return View(model); } var authProperties = new AuthenticationProperties(); authProperties.IsPersistent = model.RememberMe; var claimsPrincipal = signinManager.GetClaimsPrincipal( authUser); await HttpContext.Authentication.SignInAsync( signinManager.AuthSettings.AuthenticationScheme, claimsPrincipal, authProperties); if(!string.IsNullOrEmpty(returnUrl)) { return LocalRedirect(returnUrl); } return LocalRedirect("/"); }