我需要使用一些更复杂的规则来验证新(或更新)用户的电子邮件地址。
我曾想过使用进入用户管理器的用户存储,但IdentityResult是在哪里以及如何构建的?
我只是抛出一个例外吗?还是有一些额外的验证机制?
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
}
}
);
基本上,这里发生的是IdentityResult
的新Failed
方法期望params
为IdentityError[]
。显然,如果您有很多错误,您会创建一个IdentityError[]
变量,然后将所有错误放入,然后将其传递给Failed
方法。
这样做:
var errorMessage = new IdentityError
{
Description = "error message"
};
result =
IdentityResult.Failed(errorMessage);