首页 文章

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

提问于
浏览
12

我有一个问题 . 我在Identity ASP .NET中尝试更改错误消息,我不知道它是怎么做的 . 我想要更改错误消息 - “已经登录” . CreateAsync方法返回此错误消息 . 请帮我 .

2 回答

  • 13

    Microsoft.AspNet.Identity.UserManager<TUser> 类有一个名为 UserValidator 的属性为 IIdentityValidator<TUser> 的公共属性 . UserManager的构造函数将该属性设置为 Microsoft.AspNet.Identity.UserValidator<TUser> 的实例 . 您在调用CreateAsync时看到的错误消息来自Microsoft.AspNet.Identity.dll中嵌入的资源,并从UserValidator内部添加到IdentityResult .

    您可以提供自己的 IIdentityValidator<TUser> 实现,这只是一个带签名的方法: Task<IdentityResult> ValidateAsync(TUser item) . 您'd have to implement your own validations, but you' d可以控制出来的消息 . 就像是:

    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类执行三个基本验证,如果您自己滚动,请记住:

    • UserName不为null或空格

    • UserName是字母数字

    • UserName不重复

  • 6
    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);
            }
        }
    }
    

相关问题