gpt4 book ai didi

ASP.Net 用户名到电子邮件

转载 作者:行者123 更新时间:2023-12-02 07:24:06 26 4
gpt4 key购买 nike

我正在使用新的 ASP.NET Identity (RTM),我想知道如何继续将注册和登录从用户名更改为电子邮件。

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

我查看了 IdentityUser,可以看到 UserName 就在那里,但是由于它包含在 ASP.Net Identity 中,因此无法更改。

我知道我可以使用“UserName”作为电子邮件,使用自定义验证器,然后为 ApplicationUser 提供一个名为 DisplayName 的额外属性,但这更像是一种黑客行为,而不是解决方案。

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

最佳答案

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

  • 显然是修改数据库架构
  • 自己确保用户名的唯一性(您可以使用数据库约束/索引来完成此操作,但您必须找到一种好方法来处理错误并将错误报告给用户)
  • 找到一个好的替代品,而不是在代码中只编写“User.Identity.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;
    }

我希望这可以帮助您权衡两种方法的优缺点,并提出最佳解决方案。祝你好运!

关于ASP.Net 用户名到电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19481835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com