在MVC 5中使用电子邮件登录

Ann*_*nie 4 asp.net-mvc-5 asp.net-identity-2

在新创建的ASP.NET MVC5应用程序中,登录屏幕会要求您输入电子邮件地址.但在引擎盖下,它使用用户名进行身份验证,假设为applicationUser.UserName== applicationUser.Email.

如何更改它以使其通过电子邮件地址验证用户?

似乎是他们在这方面已经改变了身份2.X的东西.

注意:我想通过电子邮件登录.

例如,在注册视图中,我们的用户需要提供:

电子邮件: last.first@example.com

用户:最后,第一

在登录期间,将使用该电子邮件.目前,它使用电子邮件但身份验证失败,因为它将电子邮件作为用户名传递.

Ann*_*nie 7

在登录#帐户中:

if (!ModelState.IsValid) 
{ 
    return View(model); 
} 
Run Code Online (Sandbox Code Playgroud)

我补充说:

var user = await UserManager.FindByEmailAsync(model.Email);
Run Code Online (Sandbox Code Playgroud)

并改变了:

var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); 
Run Code Online (Sandbox Code Playgroud)

至:

var result = user == null ? SignInStatus.Failure : await SignInManager.PasswordSignInAsync(user.UserName, model.Password, model.RememberMe, shouldLockout: false); 
Run Code Online (Sandbox Code Playgroud)

在注册视图中,我有用户名和电子邮件(我必须添加UserName属性RegisterViewModel).