public virtual async Task <SignInStatus> PasswordSignIn(string userName, string password, bool isPersistent, bool shouldLockout) { var user = await _userManager.FindByNameAsync(userName).ConfigureAwait(false); if (user == null) { return(SignInStatus.Failure); } if (await _userManager.IsLockedOutAsync(user.Id).ConfigureAwait(false)) { return(SignInStatus.LockedOut); } if (await _userManager.CheckPasswordAsync(user, password).ConfigureAwait(false)) { return(await SignInOrTwoFactor(user, isPersistent).ConfigureAwait(false)); } if (shouldLockout) { // If lockout is requested, increment access failed count which might lock out the user await _userManager.AccessFailedAsync(user.Id).ConfigureAwait(false); if (await _userManager.IsLockedOutAsync(user.Id).ConfigureAwait(false)) { return(SignInStatus.LockedOut); } } return(SignInStatus.Failure); }