SimpleMembership - UserManager.FindAsync在MVC5中不起作用

时间:2013-11-21 16:55:54

标签: asp.net-mvc simplemembership asp.net-mvc-5

以下代码不起作用:

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

它工作正常。为什么以及如何解决?

2 个答案:

答案 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