在 ASP.NET Core Identity 中将电子邮件作为用户名

Mig*_*ura 6 asp.net-identity asp.net-core

我正在使用 ASP.NET Core Identity 创建一个用户,如下所示:

User user = new User {
  Email = "john@domain.com",
  Name = "John"
};            

await manager.CreateAsync(user, "JohnPass");
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息,指出用户名无效,因为它为空。

如何配置身份以使用电子邮件作为用户名?

或者我是否需要手动将用户名设置为与电子邮件相同?

Gau*_*vKP 3

根据必填项使用以下代码

User user = new User {
  Id = id,// some auto generated id
  Email = "john@domain.com",
  UserName = "john@domain.com",// because you want to keep email id as UserName
  DisplayName= "John"
};            

await manager.CreateAsync(user, "JohnPass");
Run Code Online (Sandbox Code Playgroud)

这种方法的一个潜在问题是,如果我们将电子邮件保留为“用户名”,那么在某些情况下,可能不允许用户将来更改其电子邮件 ID。

  • 使用这种方法的验证可能会让用户感到困惑。如果用户使用已存在的电子邮件进行注册,则来自“UserManager.CreateAsync”的错误消息会显示“用户名“foo@bar.com”已被占用”,即使用户没有用户名的概念。 (7认同)