Проверьте правильность пароля с помощью ASP.NET идентичность 2

на моем сайте я даю администраторам возможность изменить чей-то пароль, не вводя старый. Я делаю следующее:

userManager.RemovePassword(oldUser.Id);
userManager.AddPassword(oldUser.Id, newPassword);

однако это изменяет пароль, только если строка newPassword соответствует политике паролей, заданной в файлах конфигурации. Кажется, что AddPassword терпит неудачу молча, когда новый пароль не соответствует требованиям.

есть ли простой способ проверить, действителен ли пароль в соответствии с текущим политика, помимо очевидной "ручной процедуры"(проверьте, сколько символов верхнего / нижнего регистра, сколько цифр и т. д.). Я ищу что-то вроде

bool valid = IsPasswordValid("pass");

спасибо.

2 ответов


вы можете использовать PasswordValidator.ValidateAsync() метод, чтобы определить, соответствует ли пароль критериям, определенным в вашем UserManager :

var valid = (await UserManager.PasswordValidator.ValidateAsync("pass")).Succeeded;

вы можете использовать регулярные выражения, где "пароль" - это ввод пользователей, а выражение-это правила для вашего пароля, вы можете найти несколько примеров регулярного выражения здесь

http://web.ontuts.com/snippets/10-expresiones-regulares-imprescindibles-en-desarrollo-web/

if (System.Text.RegularExpressions.Regex.IsMatch(password, expression))
{
      /*do something*/
}
else
{
    /*do something invalid password*/
}