2012-10-04 75 views
2

我有一個用戶模式:ASP.NET MVC3用戶登錄

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

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

我有一個MyMembershipProvider : MembershipProvider包含:

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

了登錄動作是這樣的:

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

的問題:

當我指定正確的用戶名和密碼,我似乎無法轉到包含[Authorize]屬性的操作和控制器。當我使用斷點時,它會落入return RedirectToAction("Index", "Home");,但拒絕訪問索引頁面。

任何人都可以看到我要去哪裏可怕的錯?

+1

我肯定**不**會推薦在您的web.config中存儲任何*類型的憑據在現場。 – James

+0

這只是暫時的。我將在稍後進行適當的實施:) – Subby

回答

4

您需要設置auth cookie,以便下一個動作識別用戶已通過身份驗證。

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

謝謝。這工作。我現在明白爲什麼SetAuthCookie是必需的:) – Subby