您无需立即编写自定义会员提供程序。您可以在稍后阶段执行此操作。如果您只想让您的应用程序使用 LogOn 屏幕,您所要做的就是修改默认 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
}
稍后您可以编写自定义成员资格提供程序,以避免将数据库访问逻辑混入您的控制器并分离关注点。这是一个关于编写自定义会员提供程序的好视频: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
}
...
}