y
[HttpPost] [ValidateAntiForgeryToken] [ValidateUmbracoFormRouteString] public async Task Login([FromForm] LoginViewModel model) { if (!ModelState.IsValid) { return RedirectToCurrentUmbracoPage(); } bool userIsValid = await _usersMembers.IsUserValid( model.EmailOrUsername, model.Password); if (!userIsValid) { TempData["LoginSuccess"] = "Invalid email/username or password"; return RedirectToCurrentUmbracoPage(); } return RedirectToUmbracoPage(Guid.Parse("ee7ae6f0-056c-4e1e-8c30-772fd2c53a30")); }
public async Task IsUserValid(string emailOrUsername, string password) { IMember userByEmail = _memberService.GetByEmail(emailOrUsername); if (userByEmail != null && await VerifyPassword(userByEmail, password)) { return true; } IMember userByUsername = _memberService.GetByUsername(emailOrUsername); if (userByUsername != null && await VerifyPassword(userByUsername, password)) { return true; } return false; }
private async Task VerifyPassword(IMember user, string password) { string storedHash = user.PasswordConfiguration; string rawPassword = user.RawPasswordValue; string passwordConfiguration = "{\"hashAlgorithm\":\"HMACSHA256\"}"; using (HMACSHA256 hmac = new HMACSHA256()) { byte[] passwordBytes = Encoding.UTF8.GetBytes(rawPassword); byte[] computedHashBytes = hmac.ComputeHash(passwordBytes); string computedHashBase64 = Convert.ToBase64String(computedHashBytes); if (computedHashBase64.Equals(storedHash)) { } else { } } return false; }
s
Inject private readonly IMemberSignInManager _signInManager; then you can sign someone in with this Microsoft.AspNetCore.Identity.SignInResult signInResult = await _signInManager.PasswordSignInAsync(model.Username, model.Password, model.RememberMe, lockoutOnFailure: true);
2 Views