SimpleMembershipProvider如何在MVC4中连接

时间:2013-04-11 20:11:38

标签: c# .net asp.net-mvc simplemembership

我们在asp.net mvc4互联网模板中创建了一个CustomSimpleMembershipProvider,如此

public class MySimpleMembershipProvider : SimpleMembershipProvider    {
    public override bool RequiresUniqueEmail        {
        get            {                return true;            }
    }
}

但是使用它似乎是个谜。

  • 没有web.config条目
  • 没有对SimpleMembershipProvider的引用   InitializeSimpleMembershipAttribute或   SimpleMembershipInitializer
     所以无法改变它

所以问题是 - 在asp.net mvc4中SimpleMembershipProvider的接线在哪里以及如何更改它?

2 个答案:

答案 0 :(得分:1)

它连接在web.config中。如果使用Internet模板创建了条目,则应该在web.config中有一个条目,如下所示。

    <roleManager enabled="true" defaultProvider="SimpleRoleProvider">
  <providers>
    <clear/>
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
  </providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
  <providers>
    <clear/>
    <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
  </providers>
</membership>

您需要将会员资格条目更改为以下内容:

    <membership defaultProvider="SimpleMembershipProvider">
  <providers>
    <clear/>
    <add name="SimpleMembershipProvider" type="MyAssembly.MyNamespace.MySimpleMembershipProvider, MyAssembly" />
  </providers>
</membership>

但是创建自己的继承自SimpleMembershipProvider的提供程序可能不是实现目标的最佳方式。 SimpleMembership易于自定义,无需将提供程序修改为demonstrated in this article。您还可以指定该电子邮件用于WebSecurity.InitializeDatabaseConnection method的身份。我不确定覆盖RequiresUniqueEmail会给你想要的结果。请看decoupling SimpleMembership from MVC上的这篇文章。如果采用这种方法,您可以使用EF中的流畅API来确保电子邮件是唯一的。

答案 1 :(得分:0)

主要注册是通过以下方法执行的:

WebSecurity.InitializeDatabaseConnection

http://msdn.microsoft.com/en-us/library/webmatrix.webdata.websecurity.initializedatabaseconnection%28v=vs.111%29.aspx

(编辑) 不确定您是否真的查看了链接,但这是您连接您的连接名称,表名称和列的位置。它没有web.config条目的原因是默认情况下已经启用了Simple Membership,你只需要调用这个方法来激活它。

public static void InitializeDatabaseConnection(
string connectionStringName,
string userTableName,
string userIdColumn,
string userNameColumn,
bool autoCreateTables
)

如果您想构建自己的提供者,您仍需要按照旧方式注册。此链接可能有所帮助:

http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5-web-forms-and-asp-net-mvc-4-templates.aspx