您不需要立即編寫自定義會員供應商。你可以在稍後階段做到這一點。如果你只是想獲得您的應用程序的登錄屏幕上所有您需要做的是修改默認的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
}
...
}
非常感謝您達林,這正是我需要的。現在我可以繼續建設這個網站。 – MacSalty