以下代码不起作用:
if (ModelState.IsValid)
{
var user = await UserManager.FindAsync(model.UserName, model.Password);
if (user != null)
{
await SignInAsync(user, model.RememberMe);
return RedirectToLocal(returnUrl);
}
else
{
ModelState.AddModelError("", "Invalid username or password.");
}
}
用户为空。模型具有正确的值。
我将此代码更改为:
if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
{
return RedirectToLocal(returnUrl);
}
// If we got this far, something failed, redisplay form
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View(model);
它工作正常。为什么以及如何解决?
答案 0 :(得分:4)
UserManager.FindAsync是对ASP.NET Identity方法的方法调用。 WebSecurity.Login是一种SimpleMembership方法。 ASP.NET Identity与SimpleMembership不兼容。如果您在实体框架中使用Asp.net标识,那么您希望数据库中的表与您在SimpleMembership中使用的表不同。
有关ASP.NET身份的详细信息,请参阅http://www.asp.net/identity。
答案 1 :(得分:0)
我认为您在项目中使用Asp.Net Identity和SimpleMembership不匹配。由于Memberhsip和SimpleMembership现在已经过时,Asp.Net Identity是最新的会员技术,它不向后兼容.Net Framework 2.0或3.5(您可以使用旧的会员资格或简单的会员资格)。
更清楚一点,看看这个解释SimpleMembership与Asp.Net Identity的link