2012-10-04 2 views
2

내가 가진 사용자 모델이 : 나는이ASP.NET MVC3는 사용자 로그인

[Required] 
public string Password { get; set; } 

[Required] 
public string UserName { get; set; } 

MyMembershipProvider : MembershipProvider 포함 :

[HttpPost] 
    public ActionResult LogOn(User model, string returnUrl) 
    { 
     if (ModelState.IsValid) 
     { 
      if (Membership.ValidateUser(model.UserName, model.Password)) 
      { 
       return RedirectToAction("Index", "Home"); 
      } 
      else 
      { 
       ModelState.AddModelError("", "The user name or password provided is incorrect."); 
      } 
     } 

     // If we got this far, something failed, redisplay form 
     return View(model); 
    } 

:

public override bool ValidateUser(string username, string password) 
{ 
    if (username == ConfigurationManager.AppSettings["DefaultUsername"] && password == ConfigurationManager.AppSettings["DefaultUserPassword"]) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

내 로그온 작업은 같은 보이는 문제 :

내가 올바른 사용자 이름과 암호를 지정하면 [Authorize] 속성을 포함하는 작업 및 제어기로 갈 수없는 것 같습니다. 중단 점을 사용하면 return RedirectToAction("Index", "Home");에 속하지만 인덱스 페이지에 대한 액세스가 거부됩니다.

누구나 내가 끔찍하게 잘못 가고있는 것을 볼 수 있습니까?

+1

나는 것 확실히 **하지 ** 라이브 사이트에 Web.config의 자격 증명의 * 저장 어떤 * 유형을 추천합니다. – James

+0

이것은 일시적인 현상입니다. 나중에 적절한 구현을해야합니다 :) – Subby

답변

4

다음 작업이 사용자가 인증되었음을 인식하도록 인증 쿠키를 설정해야합니다.

.... 
if (Membership.ValidateUser(model.UserName, model.Password)) 
{ 
    FormsAuthentication.SetAuthCookie(model.UserName, true); 
    return RedirectToAction("Index", "Home"); 
} 
.... 
+0

감사합니다. 그게 효과가 있었어. 이제 SetAuthCookie가 필요한 이유를 알았습니다. :) – Subby

관련 문제