加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.Net用户名到电子邮件

发布时间:2020-12-15 18:43:21 所属栏目:asp.Net 来源:网络整理
导读:我正在使用新的ASP.NET身份(RTM),我想知道如何更改注册和登录从用户名到电子邮件。 这个想法是,我希望我的用户使用他们的电子邮件和密码注册(也可以使用外部登录获取电子邮件),并在顶部设置显示名称/用户名。 我看过IdentityUser,我可以看到UserName是存
我正在使用新的ASP.NET身份(RTM),我想知道如何更改注册和登录从用户名到电子邮件。

这个想法是,我希望我的用户使用他们的电子邮件和密码注册(也可以使用外部登录获取电子邮件),并在顶部设置显示名称/用户名。

我看过IdentityUser,我可以看到UserName是存在的,但是由于它是在ASP.Net标识中打包而无法更改的。

我知道我可以使用“UserName”作为电子邮件,使用自定义验证器,然后为ApplicationUser调用DisplayName具有一个额外的属性,但这比一个解决方案更麻烦。

我希望我的问题很清楚。提前致谢。

解决方法

如果您真的想使用电子邮件地址登录,那么IMHO,您建议的“黑客”是最好的方法。因为,如果你坚持“正确地做”,至少你必须

>修改数据库模式,显然
>确保用户名的唯一性(您可以使数据库约束/索引为您做到这一点,但是您必须找到一个很好的方式来处理错误并向用户报告错误)
找到一个很好的替代品,只需在你的代码中写“User.Identity.UserName”
>可能更多

另一方面,如果您决定“骇客”您需要的UserName字段

>修改RegisterViewModel验证(将[EmailAddress]添加到UserName属性),可能稍微自定义[Display(Name = …)]等
>确保您的AccountController中使用的UserManager.UserValidator实例允许在电子邮件地址中使用特殊字符。为此,请确保其非默认构造函数如下所示:

public AccountController(UserManager<ApplicationUser> userManager)
{
    UserManager = userManager;
    var userValidator = UserManager.UserValidator as UserValidator<ApplicationUser>;
    userValidator.AllowOnlyAlphanumericUserNames = false;
}

我希望这可以帮助你衡量这两种方法的利弊,并提出最好的解决方案。祝你好运!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读