2013-11-21 36 views
-1

工作,下面的代碼無法正常工作:SimpleMembership - UserManager.FindAsync不MVC5

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

,它工作正常。爲什麼以及如何解決?

回答

4

UserManager.FindAsync是調用ASP.NET Identity方法的方法。 WebSecurity.Login是一個SimpleMembership方法。 ASP.NET身份與SimpleMembership不兼容。如果您將Asp.net標識與實體框架一起使用,那麼您的數據庫中的表格與使用SimpleMembership的表格不同。

有關ASP.NET身份的更多信息,請參閱http://www.asp.net/identity

0

我認爲你的項目中Asp.Net Identity和SimpleMembership的使用不匹配。由於Memberhsip和SimpleMembership現在已經過時,而Asp.Net Identity是最新的成員技術,它不兼容.Net Framework 2.0或3.5(您可以使用舊的Membership或Simple Memebrship)。

爲了更加清楚,看看這個link,它解釋了SimpleMembership vs Asp.Net身份