asp.net 身份中的用户名验证消息问题

Posted

技术标签:

【中文标题】asp.net 身份中的用户名验证消息问题【英文标题】:Issue with username validation message in asp.net identity 【发布时间】:2013-12-25 11:36:43 【问题描述】:

我在我的项目中使用新的会员系统 asp.net 身份。我想使用电子邮件地址作为用户名,是的,我已经看过这些问题了:

Configure Microsoft.AspNet.Identity to allow email address as username

ASP.NET identity use email instead of user name

我知道如何使用电子邮件作为用户名。但我还有另一个问题,验证错误消息:

Name xxxxxxxxx@xxxx.com is already taken.

当用户尝试使用现有电子邮件地址注册时,会出现此消息。因此,我想提供类似以下的错误消息,而不是此错误消息:

User with the given email address already exist.

那么我怎样才能在 Asp.Net 身份中做到这一点??

【问题讨论】:

【参考方案1】:

它只是替换消息。搜索“名称 0 已被占用”。并将其替换为您的消息“具有给定电子邮件地址的用户已存在”。

您可以在 AddError 方法中执行此操作。 这是一个例子,你应该创建特定于应用程序的工作代码。

private void AddErrors(IdentityResult result)

    foreach (var error in result.Errors)
    
        if (error.EndsWith("is already taken."))
            ModelState.AddModelError("", "User with the given email address already exists");
        else ModelState.AddModelError("", error);
    

【讨论】:

这可行,但并不优雅。我相信 ASP.NET Identity 团队正在研究真正的代码 - 来源:***.com/a/19962202/687549【参考方案2】:

另一种选择是插入你自己的 UserValidator,它只检查用户名/电子邮件,如果它没有失败,它会委托给默认的 UserValidator,否则它会返回一个带有你想要的错误消息的 IdentityResult。

【讨论】:

以上是关于asp.net 身份中的用户名验证消息问题的主要内容,如果未能解决你的问题,请参考以下文章

使用身份验证 ASP.NET MVC 中的用户

Windows 身份验证 Asp.net 知道如何

在 WCF 服务中使用 ASP.NET 成员资格提供程序身份验证

控制器 ASP.net 核心 2.1 中的 Jwt 角色身份验证

如何支持 NTLM 身份验证并回退到 ASP.NET MVC 中的表单?

从 ASP.NET/Blazor 服务器中的当前经过身份验证的用户获取数据