Database ASP.net MVC 3表单验证项目如何连接到数据库?

Database ASP.net MVC 3表单验证项目如何连接到数据库?,database,asp.net-mvc-3,forms-authentication,Database,Asp.net Mvc 3,Forms Authentication,我目前有一个填充的数据库,一个.NET1.1网站,并负责在MVC3中重新编写它。我创建了带有表单身份验证的MVC项目,将数据库连接到该项目,但不知道访问其中信息的最佳方法 我发现了这个链接:,但我不确定这是否是我在本例中寻找的 我今天的目标是让登录页面正常工作,这样我就可以使用管理员帐户登录并查看站点的主页。我仍然是MVC的新手,并且倾向于过于广泛地寻找答案。希望我遗漏了一些明显的东西。您不需要立即编写自定义成员资格提供程序。你可以在晚些时候做。如果您只想让您的应用程序在登录屏幕上工作,您所要做

我目前有一个填充的数据库,一个.NET1.1网站,并负责在MVC3中重新编写它。我创建了带有表单身份验证的MVC项目,将数据库连接到该项目,但不知道访问其中信息的最佳方法

我发现了这个链接:,但我不确定这是否是我在本例中寻找的


我今天的目标是让登录页面正常工作,这样我就可以使用管理员帐户登录并查看站点的主页。我仍然是MVC的新手,并且倾向于过于广泛地寻找答案。希望我遗漏了一些明显的东西。

您不需要立即编写自定义成员资格提供程序。你可以在晚些时候做。如果您只想让您的应用程序在登录屏幕上工作,您所要做的就是修改默认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
}
稍后,您可以编写一个自定义成员资格提供程序,以避免将db访问逻辑混合到控制器中,并分离关注点。下面是一段关于编写自定义成员资格提供程序的精彩视频:

您不需要覆盖MembershipProvider类的所有方法,只需要覆盖您使用的方法。首先,您可以仅覆盖ValidateUser方法,以允许用户使用自定义数据表在您的网站中进行身份验证:

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

    ...
}

非常感谢你,达林,这正是我需要的。现在我可以继续建设这个网站了。