我正在使用新的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; }
我希望这可以帮助你衡量这两种方法的利弊,并提出最好的解决方案。祝你好运!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。