カスタムメンバーシッププロバイダーをすぐに作成する必要はありません。後の段階でそれを行うことができます。アプリケーションをログオン画面で動作させたいだけの場合は、デフォルトのAccountControllerでLogOnメソッドを変更するだけです。
[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
}
後で、カスタムメンバーシッププロバイダーを作成して、dbアクセスロジックがコントローラーに混在することを回避し、関心の分離を行うことができます。カスタムメンバーシッププロバイダーの作成に関する優れたビデオは次のとおりです。http://www.asp.net/web-forms/videos/how-do-i/how-do-i-create-a-custom-membership-provider
MembershipProviderクラスのすべてのメソッドをオーバーライドする必要はなく、使用するメソッドのみをオーバーライドします。最初は、ValidateUserメソッドのみをオーバーライドして、カスタムデータテーブルを使用してWebサイトでユーザー認証を行えるようにすることから始めることができます。
public class MyMembershipProvider : MembershipProvider
{
public override bool ValidateUser(string username, string password)
{
// put your data access logic here
}
...
}