1

我目前有一个填充数据库、一个 .NET 1.1 网站以及在 MVC 3 中重写它的任务。我已经创建了带有表单身份验证的 MVC 项目,将我的数据库连接到项目,但不知道最好的方法以访问其中的信息。

我遇到了这个链接: http: //msdn.microsoft.com/en-us/library/f1kyba5e (v=vs.100).aspx?ppud=4 ,但我不确定这是否是我的在这种情况下寻找。

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

4

1 回答 1

3

您无需立即编写自定义会员提供程序。您可以在稍后阶段执行此操作。如果您只想让您的应用程序使用 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
    }

    ...
}
于 2013-02-05T17:21:35.087 回答