Как войти с помощью электронной почты в личность 2?

В MVC5 Identity 2 SignInManager.PasswordSignInAsync берет имя пользователя для входа.

var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);

но мое имя пользователя и адрес электронной почты не совпадают. но я хочу адрес электронной почты для входа. Так как я могу это сделать? Благодаря

Ответ 1

Получить пользователя из UserManager по электронной почте.

var user = UserManager.FindByEmail(email);

Затем используйте SignInManager PasswordSignInAsync с именем пользователя

var result = await SignInManager
.PasswordSignInAsync(user.UserName,password,isPersistent,shouldLockout);

Или внутри вашего SignInManager добавьте этот метод (Обсуждение ASP.NET Identity)

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

Затем используйте его так же, как PasswordSignInAsync, но с электронной почтой пользователя вместо usermane.