>我正在尝试更改Identity ASP .NET中的错误消息,但我不知道该怎么做。我想将错误消息更改为:"登录已被占用"。创建异步方法应返回此错误消息。
Microsoft.AspNet.Identity.UserManager<TUser>
类有一个名为 UserValidator
的公共属性,类型为 IIdentityValidator<TUser>
。 用户管理器的构造函数将该属性设置为 Microsoft.AspNet.Identity.UserValidator<TUser>
的实例。调用 CreateAsync 时看到的错误消息来自嵌入在 Microsoft.AspNet.Identity 中的资源.dll并从 UserValidator 内部添加到 IdentityResult 中。
你可以提供你自己的IIdentityValidator<TUser>
实现,它只是一个带有签名的方法:Task<IdentityResult> ValidateAsync(TUser item)
。您必须实现自己的验证,但您可以控制发出的消息。像这样:
public class UserValidator : IIdentityValidator<ApplicationUser>
{
public async Task<IdentityResult> ValidateAsync(ApplicationUser item)
{
if (string.IsNullOrWhiteSpace(item.UserName))
{
return IdentityResult.Failed("Really?!");
}
return IdentityResult.Success;
}
}
默认的 UserValidator 类执行三个基本验证,如果您自己进行验证,请记住:
- 用户名不为空或空格
- 用户名为字母数字
- 用户名不是重复的
private void AddErrors(IdentityResult result)
{
foreach (var error in result.Errors)
{
if (error.StartsWith("Name"))
{
var NameToEmail= Regex.Replace(error,"Name","Email");
ModelState.AddModelError("", NameToEmail);
}
else
{
ModelState.AddModelError("", error);
}
}
}