Asp.net core 在ASP.NET核心标识中将电子邮件设为用户名

Asp.net core 在ASP.NET核心标识中将电子邮件设为用户名,asp.net-core,asp.net-identity,Asp.net Core,Asp.net Identity,我正在使用ASP.NET核心标识创建一个用户,如下所示: User user = new User { Email = "john@domain.com", Name = "John" }; await manager.CreateAsync(user, "JohnPass"); 我得到一个错误,说用户名无效,因为它是空的 如何配置身份以将电子邮件用作用户名 或者我需要手动将用户名设置为电子邮件的用户名吗?根据必填项使用下面的代码 User user = ne

我正在使用ASP.NET核心标识创建一个用户,如下所示:

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

await manager.CreateAsync(user, "JohnPass");
我得到一个错误,说用户名无效,因为它是空的

如何配置身份以将电子邮件用作用户名


或者我需要手动将用户名设置为电子邮件的用户名吗?

根据必填项使用下面的代码

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");

我认为最好的办法是简单地将UserName设置为电子邮件,并使用一个自定义UserValidator,如下所示:使用这种方法进行验证可能会让用户感到困惑。如果用户使用已存在的电子邮件注册,则来自
UserManager.CreateAsync
的错误消息会显示“用户名”foo@bar.com“已使用”,即使用户没有用户名的概念。