NotAllowed
означает, что адрес электронной почты или номер телефона не были подтверждены (и требуется подтверждение). Вы можете проверить это явно следующим образом (при условии, что у вас есть экземпляр UserManager
из DI):
await _userManager.IsEmailConfirmedAsync(user);
await _userManager.IsPhoneNumberConfirmedAsync(user);
Чтобы использовать любую из этих двух функций, вам потребуется user
, который можно получить следующим образом:
var user = await _userManager.FindByNameAsync(loginViewModel.UserName);
Чтобы определить, не удалось ли указать имя пользователя или пароль, сначала необходимо проверить IsLockedOut
, IsNotAllowed
и RequiresTwoFactor
. Если все они возвращают false
, имя пользователя или пароль неверны. Чтобы определить, какая из них является проблемой, вы можете проверить возвращаемое значение из await _userManager.FindByNameAsync(user)
. Вот полный пример:
var signinResult = await _signInManager.PasswordSignInAsync(
loginViewModel.UserName,
loginViewModel.Password,
false, false);
var user = await _userManager.FindByNameAsync(loginViewModel.UserName);
if (signinResult.IsNotAllowed)
{
if (!await _userManager.IsEmailConfirmedAsync(user))
{
// Email isn't confirmed.
}
if (!await _userManager.IsPhoneNumberConfirmedAsync(user))
{
// Phone Number isn't confirmed.
}
}
else if (signinResult.IsLockedOut)
{
// Account is locked out.
}
else if (signinResult.RequiresTwoFactor)
{
// 2FA required.
}
else
{
// Username or password is incorrect.
if (user == null)
{
// Username is incorrect.
}
else
{
// Password is incorrect.
}
}