Я использую ASP. NET MVC шаблон приложения и меняю вещи в зависимости от своих потребностей. Когда я хочу войти в систему зарегистрированным пользователем, я хочу войти по userName
. Я регистрируюсь по электронной почте и затем изменяю значение электронной почты, которое хранится в userName
, на какое-то имя пользователя.
Когда я пытаюсь войти, я получаю попытку входа в систему не удалась.
Использование отладчика I выяснил источник проблемы.
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}
Таким образом, часть с !ModelState.IsValid
работает и работает нормально.
var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
Эта строка кода возвращает Failure
, и моя попытка входа в систему не удалась.
Я отключил RequireUniqueEmail
из SignInManager
, но это не помогло. Я думаю, проблема в том, что где-то внутри классов Microsoft E-mail
все еще требуется, и я не предоставляю его, потому что мой вход в систему не удается.
Я изменил View и LoginViewModel
с новым свойством UserName
и таблица AspNetUsers
db имеет поле с именем UserName
и обновлено с моими новыми значениями.