ASP.Net用户名到电子邮件

前端之家收集整理的这篇文章主要介绍了ASP.Net用户名到电子邮件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用新的ASP.NET身份(RTM),我想知道如何更改注册登录用户名到电子邮件

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

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

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

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

解决方法

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

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

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

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

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

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

猜你在找的asp.Net相关文章