在 ASP.NET MVC 应用程序中集成 SimpleMembershipProvider
Integrating SimpleMembershipProvider in ASP.NET MVC Application
我很难实施(或集成)ASP.NET SimpleMembershipProvider。我已经有了以前版本的应用程序的数据库表,我不想创建新的用户表、角色等...我想使用现有的表(已经用 entity framework 映射)所以数据库中的用户可以登录到未来的应用程序。这是我所做的:
Web.config
<authentication mode="Forms">
<forms loginUrl="~/Auth" timeout="2880" />
</authentication>
<membership defaultProvider="SimpleMembershipProvider">
<providers>
<clear />
<add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
</providers>
</membership>
<roleManager enabled="true" />
Global.asax
WebSecurity.InitializeDatabaseConnection("MyConnectionString", "tblCreds", "IdCred", "Login", false);
// I put false in the end because I don't want it to create new tables
控制器:
[HttpPost]
public ActionResult Index(UserCreds creds)
{
if (ModelState.IsValid)
{
UserBLL bll = new UserBLL();
BaseUser authUser = bll.Authenticate(creds.Login, creds.Password);
if (authUser != null)
{
WebSecurity.Login(creds.Login, creds.Password);
return RedirectToAction("Index", "Home");
}
}
ViewBag.ErrorMessage = "Error";
return View();
}
我遇到了这个异常:
System.Data.SqlClient.SqlException: Invalid object name 'webpages_Membership'
感谢您的帮助:)
您看到该异常是因为 SimpleMembershipProvider 在内部使用这些 table 名称。不幸的是,它们是不可覆盖的(直到我最后一次使用它)。
SMP 的设计目标是提供一个开箱即用的成员工作模型,它有自己的 table 模式。您可以配置用户 table 名称并添加更多列但不是所有内容。
有关详细信息,请参阅 this 问题。
我很难实施(或集成)ASP.NET SimpleMembershipProvider。我已经有了以前版本的应用程序的数据库表,我不想创建新的用户表、角色等...我想使用现有的表(已经用 entity framework 映射)所以数据库中的用户可以登录到未来的应用程序。这是我所做的:
Web.config
<authentication mode="Forms">
<forms loginUrl="~/Auth" timeout="2880" />
</authentication>
<membership defaultProvider="SimpleMembershipProvider">
<providers>
<clear />
<add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
</providers>
</membership>
<roleManager enabled="true" />
Global.asax
WebSecurity.InitializeDatabaseConnection("MyConnectionString", "tblCreds", "IdCred", "Login", false);
// I put false in the end because I don't want it to create new tables
控制器:
[HttpPost]
public ActionResult Index(UserCreds creds)
{
if (ModelState.IsValid)
{
UserBLL bll = new UserBLL();
BaseUser authUser = bll.Authenticate(creds.Login, creds.Password);
if (authUser != null)
{
WebSecurity.Login(creds.Login, creds.Password);
return RedirectToAction("Index", "Home");
}
}
ViewBag.ErrorMessage = "Error";
return View();
}
我遇到了这个异常:
System.Data.SqlClient.SqlException: Invalid object name 'webpages_Membership'
感谢您的帮助:)
您看到该异常是因为 SimpleMembershipProvider 在内部使用这些 table 名称。不幸的是,它们是不可覆盖的(直到我最后一次使用它)。
SMP 的设计目标是提供一个开箱即用的成员工作模型,它有自己的 table 模式。您可以配置用户 table 名称并添加更多列但不是所有内容。
有关详细信息,请参阅 this 问题。