2013-02-05 73 views
1

我目前有一個填充數據庫,一個.NET 1.1網站和在MVC 3中重寫它的任務。我已經使用Forms Authentication創建了MVC項目,將我的數據庫連接到項目,但不知道訪問其中的信息的最佳方式。ASP.net MVC 3 Forms Authentication項目如何連接到數據庫?

我遇到了這個鏈接:http://msdn.microsoft.com/en-us/library/f1kyba5e(v=vs.100).aspx?ppud=4,但我不確定這是我在尋找的這種情況。

我今天的目標是讓登錄頁面正常工作,以便我可以使用管理員帳戶登錄並查看網站的主頁。我仍然是MVC的新手,並且往往過於廣泛地尋找答案。希望有一些明顯的,我錯過了。

回答

3

您不需要立即編寫自定義會員供應商。你可以在稍後階段做到這一點。如果你只是想獲得您的應用程序的登錄屏幕上所有您需要做的是修改默認的AccountController登錄方法工作:

[HttpPost] 
public ActionResult LogOn(LogOnModel model, string returnUrl) 
{ 
    if (ModelState.IsValid) 
    { 
     if (ValidateUser(model.UserName, model.Password)) 
     { 
      FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); 
      if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") 
       && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\")) 
      { 
       return Redirect(returnUrl); 
      } 
      else 
      { 
       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); 
} 

,然後你需要的是寫的ValidateUser方法,將查詢您的如果用戶存在數據庫,並驗證:

private bool ValidateUser(string username, string password) 
{ 
    // TODO: query your db here and verify if the account exists 
} 

後來,你可以寫一個自定義的成員提供,以避免數據庫訪問邏輯混合到您的控制器和分離關注。下面是一個關於編寫定製會員供應商的不錯的視頻:http://www.asp.net/web-forms/videos/how-do-i/how-do-i-create-a-custom-membership-provider

您不需要重寫MembershipProvider類的所有方法,只需要那些您使用的方法。在開始的時候,你可以通過重寫只的ValidateUser方法使用自定義數據表,以允許用戶在驗證您的網站開始:

public class MyMembershipProvider : MembershipProvider 
{ 
    public override bool ValidateUser(string username, string password) 
    { 
     // put your data access logic here 
    } 

    ... 
} 
+0

非常感謝您達林,這正是我需要的。現在我可以繼續建設這個網站。 – MacSalty

相關問題