2013-11-21 3 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."); 
      } 
     } 

사용자는 null입니다. 모델에 올바른 값이 있습니다.

나는이 코드를 변경 :

 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 ID 메서드에 대한 메서드 호출입니다. WebSecurity.Login은 SimpleMembership 메소드입니다. ASP.NET ID가 SimpleMembership과 호환되지 않습니다. 엔티티 프레임 워크와 함께 Asp.net ID를 사용하는 경우 SimpleMembership과 함께 사용했던 테이블과 다른 데이터베이스 테이블이 필요합니다.

ASP.NET ID에 대한 자세한 내용은 http://www.asp.net/identity을 참조하십시오.

0

귀하의 프로젝트에서 Asp.Net Identity와 SimpleMembership 사용이 일치하지 않는다고 생각합니다. Memberhsip 및 SimpleMembership은 현재 폐기되었으며 Asp.Net Identity는 .NET Framework 2.0 또는 3.5 (이전 멤버쉽 또는 Simple Memebrship을 사용할 수 있음)와 호환되지 않는 최신 멤버십 기술입니다.

더 명확하게하려면 SimpleMembership 대 Asp.Net Identity를 설명하는 link을 보시기 바랍니다.