0

我们像这样在 asp.net mvc4 互联网模板中创建了一个 CustomSimpleMembershipProvider

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

但是使用它似乎是一个谜,因为

  • 没有 web.config 条目
  • InitializeSimpleMembershipAttribute 或 SimpleMembershipInitializer 中没有对 SimpleMembershipProvider 的引用,
    因此无法在此处更改

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

4

2 回答 2

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 易于定制,无需修改提供程序,如本文所示您还可以使用WebSecurity.InitializeDatabaseConnection 方法指定将电子邮件用于身份。我不确定覆盖 RequiresUniqueEmail 会给你想要的结果。查看这篇关于将 SimpleMembership 与 MVC 解耦的文章。如果您采用这种方法,您可以使用 EF 中的 fluent API 来确保电子邮件是唯一的。

于 2013-04-12T13:32:33.210 回答
0

主要注册是从此方法执行的:

WebSecurity.InitializeDatabaseConnection

http://msdn.microsoft.com/en-us/library/webmatrix.webdata.websecurity.initializeddatabaseconnection%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

于 2013-04-11T20:40:37.140 回答