我将在前言中说:我不太了解成员资格提供程序如何在ASP.NET中工作,我正在努力更好地理解它们。
我刚刚在VS2010中创建了一个新的MVC3解决方案。我可以在ASP.NET的开发服务器中运行它,它工作得很好 - 非常酷。但我有点困惑的是,ASP.NET开发服务器中的表单身份验证是如何工作的。
考虑AccountController.cs
的股票版本:
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (Membership.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.");
}
}
它使用Membership
类来验证通过MVC3网站注册的用户名和密码。那很好,我明白了,但......这究竟是如何运作的?特别是在ASP.NET开发服务器中?
是否有数据库我可以以某种方式打开并查看我看到的输入的测试信息?它在哪里?
就像我说的,我真的不明白它是如何工作的 - 如果我无法弄清楚它是否适用于ASP.NET开发服务器,那么我当然无法在IIS中找到它。我已经阅读了微软的Introduction to Membership文档,但我不觉得它在解释这是如何在较低级别工作方面做得不错;它似乎只是说会员资格是“内置的” - 好吧,这很酷,但故事要比这更多,对吗?
答案 0 :(得分:3)
注册用户后,请检查应用程序的~/App_Data
文件夹。这是数据库默认运行的地方。当然,您可能需要一个正在运行的SQLExpress实例。
打开你的web.config并查看:
<connectionStrings>
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
</connectionStrings>
然后,您可以修改连接字符串并在生产环境中使用真正的SQL Server数据库,而不是将其本地存储在某些文件中。