如何更改 ASP.NET 标识中的错误消息



>我正在尝试更改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 类执行三个基本验证,如果您自己进行验证,请记住:

  1. 用户名不为空或空格
  2. 用户名为字母数字
  3. 用户名不是重复的
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);
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新