我当前正在更改MVC5项目的默认模板(具有身份)。当我第一次注册和登录时,一切都很好。但是,当我在默认级别上进行一些更改时,将用户名存储为电子邮件。但是,当我将其更改为"从形式"中存储用户名时,它会尝试"无效"登录尝试。谁能告诉我我出了什么问题。如果是,我要么必须在其他地方进行更改?
这是我的寄存器功能:
之前:
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
我已将这一行更改为:
var user = new ApplicationUser { UserName = model.usrName, Email = model.Email , PhoneNumber=model.Contact};
,我的登录功能是默认情况下的。喜欢,
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, change to shouldLockout: true
var result = await SignInManager.PasswordSignInAsync(model.Email, 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);
}
}
现在,有人可以告诉我我错了吗?
如果要将用户名从 model.Email
更改为 model.usrName
,则必须在登录功能中使用 model.usrName
。这样:
var result = await SignInManager.PasswordSignInAsync(model.usrName, model.Password, model.RememberMe, shouldLockout: false);
因为UserName
和Password
字段是要登录的默认唯一参数。因此,它希望使用用户名字段完成登录操作。