如何使用身份2中的电子邮件登录?

Naz*_*ain 16 asp.net-mvc identity asp.net-mvc-5 asp.net-identity asp.net-identity-2

在MVC5 Identity 2中,SignInManager.PasswordSignInAsync获取登录用户名.

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

但我的用户名和电子邮件不一样.但我想通过电子邮件地址登录.所以我该怎么做?谢谢

tmg*_*tmg 35

通过电子邮件从UserManager获取用户.

var user = UserManager.FindByEmail(email);
Run Code Online (Sandbox Code Playgroud)

然后使用SignInManager的PasswordSignInAsync和用户的用户名

var result = await SignInManager
.PasswordSignInAsync(user.UserName,password,isPersistent,shouldLockout);
Run Code Online (Sandbox Code Playgroud)

或者在你的SignInManager里面添加这个方法(ASP.NET身份讨论)

public async Task<SignInStatus> PasswordEmailSignInAsync(string email, string password, bool isPersistent, bool shouldLockout)
{
      var user =  UserManager.FindByEmail(email);
      return await PasswordSignInAsync(user.UserName,password,isPersistent,shouldLockout);
}
Run Code Online (Sandbox Code Playgroud)

然后使用与PasswordSignInAsync相同但使用用户电子邮件而不是usermane.