Как установить IdentityResult?

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

Я думал об использовании хранилища пользователей, которое входит в диспетчер пользователей, но где и как создается IdentityResult?

Я просто выбрасываю исключение и все? Или есть какой-то дополнительный механизм проверки?

3 ответа

IdentityResult занимает IEnumerable<String> в конструкторе:

public IdentityResult(IEnumerable<string> errors)

Это ошибки, которые будут переданы обратно в вызывающий код.

В качестве альтернативы вы можете вызвать этот метод:

var identityResult = IdentityResult.Failed("First error", "Second validation error");

Это будет идентично вызову конструктора со списком строк.

.NETCore изменил ситуацию. Итак, чтобы вернуть неудачный результат, в котором вы назначаете свои собственные ошибки, вам нужно будет создать полностью квалифицированный IdentityError экземпляр для каждой ошибки, которую вы хотите передать.

Скажем, например, у вас есть следующие ошибки, и вы хотите вернуть неудачный результат с этими ошибками:

var errors1 = "Your password is incorrect";
var errors2 = "Your email is not recognized";

Чтобы продолжить и вернуть неверный адрес для с этими ошибками, вы должны сделать следующее:

var result = IdentityResult.Failed(
   new IdentityError[] {
      new IdentityError{
         Code = "0001",
         Description = error1
      },
      new IdentityError{
         Code = "0002",
         Description = error2
      }
   }
);

В основном здесь происходит то, что новый Failed метод IdentityResult ожидает params в виде IdentityError[]. Очевидно, что если бы у вас было много ошибок, вы бы создали IdentityError[] переменную, а затем поместите все свои ошибки и затем передайте ее в свой Failed метод.

Сделай это так :

      var errorMessage = new IdentityError
                {
                    Description = "error message"
                };

                result = 
                    IdentityResult.Failed(errorMessage);
Другие вопросы по тегам