【问题标题】:How is SimpleMembershipProvider wired in MVC4SimpleMembershipProvider 如何在 MVC4 中连接
【发布时间】:2013-04-11 20:11:37
【问题描述】:

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

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

但使用它似乎是一个谜

  • 没有 web.config 条目
  • 中没有对 SimpleMembershipProvider 的引用 InitializeSimpleMembershipAttribute 或 SimpleMembershipInitializer
    所以不能在那里改变它

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

【问题讨论】:

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


    【解决方案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 中的 fluent API 来确保电子邮件是唯一的。

    【讨论】:

    • 感谢您阅读您网站上关于 SimpleMembership 的其他文章,非常有帮助
    【解决方案2】:

    主要注册是通过这个方法进行的:

    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

    【讨论】:

    • > asp.net mvc4 中 SimpleMembershipProvider 的接线在哪里以及如何更改? - 那个方法就是接线
    • 之所以称为 Simple,是因为它提供了基本功能,只要您遵循一些基本的命名约定,它就应该可以与任何数据库“正常工作”。它的目标是不像编写标准会员提供者那样参与,但听起来这就是你真正想要的方式。 Custom Simple Membership Provider 有点矛盾。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 2014-10-20
    • 2013-03-20
    • 1970-01-01
    • 2012-12-18
    相关资源
    最近更新 更多