Asp.net mvc 无法通过用户名登录
我试图使用PasswordSignInAsync通过用户名登录,但结果甚至是错误的,这是我的代码:Asp.net mvc 无法通过用户名登录,asp.net-mvc,asp.net-core,Asp.net Mvc,Asp.net Core,我试图使用PasswordSignInAsync通过用户名登录,但结果甚至是错误的,这是我的代码: public async Task<IActionResult> Login(LoginViewModel vm) { if (ModelState.IsValid) { var user = await _userManager.FindByEmailAsync(vm.Email); var result = await _signIn
public async Task<IActionResult> Login(LoginViewModel vm)
{
if (ModelState.IsValid)
{
var user = await _userManager.FindByEmailAsync(vm.Email);
var result = await _signInManager.PasswordSignInAsync(user.UserName, vm.Password, vm.RememberMe, false);
if (result.Succeeded)
{
return RedirectToAction("Index", "Home");
}
ModelState.AddModelError("", "Wrong Credentials!");
return View(vm);
}
return View(vm);
}
我试图在PasswordSignInAsync的第一个参数中传递用户名和电子邮件,但我无法修复此问题
我在这里也看到了其他类似的问题,但我不明白如何解决这个问题。您的代码很好。但是,由于您已经获取了用户,您可以直接使用:
await _signinManager.PasswordSignInAsync(user, vm.Password, vm.RememberMe, false);
重要的是要认识到,这种方法可能由于多种原因而失败,而不仅仅是用户名/密码不正确。2FA可能是必需的result.RequiresTwoFactor,或者用户可能被锁定result.IsLockedOut。此外,如果您需要电子邮件验证,则在验证电子邮件结果之前,所有登录尝试都将失败。不允许。您应该检查所有这些条件,并适当地处理它们。感谢您的回答,查看表中的字段emailconfirm为true,这两个因素未启用,因此我真的不知道。我试过你的代码,但同样的问题,不允许也适用于电话号码验证。
await _signinManager.PasswordSignInAsync(user, vm.Password, vm.RememberMe, false);