0

У меня есть веб-приложение с использованием ASP.NET Identity 3.0, в котором я создаю пользователей (вместо того, чтобы регистрироваться пользователями). Я отправляю электронное письмо с подтверждением для проверки их учетных записей электронной почты. Идея состоит в том, что они входят через URL-адрес и, поскольку у них еще нет пароля, они установят начальный пароль и подтвердят свою электронную почту одним махом (я пытаюсь убить двух птиц одним камень как изрядно возможно).Проверка сложности пароля и достоверности токена при подтверждении электронной почты в Identity 3.0

Проблема заключается в том, что я не должен подтвердить электронное письмо с помощью UserManager.ConfirmEmail(), если введенный пароль не является допустимым паролем в соответствии с политикой сложности, поскольку это приведет к истечению срока действия токена. Единственный способ узнать, соответствует ли пароль, - это попытаться установить его с помощью UserManager.AddPassword(), но я не должен пытаться его изменить , если Я знаю, что токен подтверждения электронной почты действителен.

Как проверить, совместим ли пароль, не устанавливая его? Или как я могу проверить, действителен ли токен, не истекая его?

ответ

1

ASP.NET Identity 3.0 предоставляет пароль, который вы можете использовать, чтобы проверить, действительно ли пароль действителен перед выполнением других действий.

Here, где вы можете найти фактический код.

Here Здесь вы найдете некоторые модульные тесты, которые дадут вам представление о том, как использовать валидатор паролей.

Общее использование выглядит следующим образом:

var validator = new PasswordValidator<User>(); 
var result = await validator.ValidateAsync(UserManager, null, passwordToValidate); 
if (result.Failed) // Failed Validation 
if (result.Succeeded) // Passed Validation 

2-й параметр ValidateAsync является экземпляр пользователя, но не могут быть применимы в вашей ситуации, поэтому null здесь.

Я надеюсь, что это поможет вам.

+0

Спасибо. Это сработало для меня. Мой одношаговый процесс работает красиво. Я действительно смотрел на это раньше, но из своего встроенного комментария я думал, что он предназначен для проверки правильности пароля пользователя, не введя его в систему. Я только недавно начал работать с Identity и, хотя это потрясающе, я сталкиваюсь тот факт, что документация встроенная или какая-либо другая. – AbeyMarquez

+0

Кстати, интересно, что второй параметр User в ValidateAsync даже не используется нигде в этом методе. * shrug * – AbeyMarquez

+0

Я согласен с вашим комментарием по документам вокруг Identity ... ужасно! Я пробовал эту же проблему только вчера вечером, пытаясь сделать обновление кода. Рад, что это помогло! –

 Смежные вопросы

  • Нет связанных вопросов^_^