使电子邮件作为用户名在ASP.NET核心身份

问题描述:

我使用ASP.NET核心身份如下创建用户:使电子邮件作为用户名在ASP.NET核心身份

User user = new User { 
    Email = "[email protected]", 
    Name = "John" 
};    

await manager.CreateAsync(user, "JohnPass"); 

我得到一个错误说的用户名是无效的,因为它是空的。

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

或者我需要手动设置用户名等于电子邮件?下面的代码

+0

我认为最好的方法很简单,就是用户名设置为电子邮件,使用自定义UserValidator如下所示:http://stackoverflow.com/a/19460800/1166719 –

使用基于强制项目

User user = new User { 
    Id = id,// some auto generated id 
    Email = "[email protected]", 
    UserName = "[email protected]",// because you want to keep email id as UserName 
    DisplayName= "John" 
};    

await manager.CreateAsync(user, "JohnPass"); 
+0

使用此方法进行验证可能会让用户感到困惑。如果用户注册了一个已经存在的电子邮件,那么UserManager.CreateAsync中的错误信息会显示“用户名[email protected]'已被占用”,即使用户没有用户名的概念。 –