【问题标题】:MVC Custom Membership ProviderMVC 自定义成员资格提供程序
【发布时间】:2012-01-03 05:47:41
【问题描述】:

我有一个自定义成员资格提供程序,我已指定在我的 web.config 文件中用于 MVC3 项目。我假设它会被用来代替内置的成员资格提供程序,因为我指定它的用途是这样的:

<system.web>
<membership defaultProvider="CustomMySQLMembershipProvider">
  <providers>
    <clear />
    <add
      connectionStringName="dbConn"
      enablePasswordRetrieval="false"
      enablePasswordReset="true"
      requiresQuestionAndAnswer="false"
      requiresUniqueEmail="true"
      passwordFormat="Hashed"
      maxInvalidPasswordAttempts="25"
      minRequiredPasswordLength="6"
      minRequiredNonalphanumericCharacters="0"
      passwordAttemptWindow="10"
      passwordStrengthRegularExpression=""
      applicationName="/jp2012"
      name="CustomMySQLMembershipProvider"
      type="NameSpace.CustomMySqlMembershipProvider" />
  </providers>
</membership>
</system.web>

我是否必须在我的代码中做一些事情来让它覆盖默认的成员资格提供程序?现在我可以像这样访问它:

CustomMySqlMembershipProvider membership = 
    (CustomMySqlMembershipProvider)Membership.Providers["CustomMySQLMembershipProvider"];

有没有办法让我使用web.config 文件自动覆盖它,这样我就不必硬编码我的实现名称?更像是这样的:

MembershipProvider membership = new MembershipProvider();

有什么想法吗?如果您需要更多信息,请告诉我。

【问题讨论】:

    标签: asp.net-mvc-3 membership-provider


    【解决方案1】:

    您的会员资格提供者是您案例的默认提供者。除非您的提供程序中有其他功能,否则您不需要显式转换提供程序。

    例如,当您调用Membership.GetUser() 时,它会调用您的会员证明者的GetUser(...) 方法。

    【讨论】:

    • 我怎样才能让它调用我的 Initialize 方法?我在那里有代码初始化整个实现的方法中使用的变量。
    • @JesseBuesking 您必须覆盖 Initialize(string name, NameValueCollection config) 才能进行初始化。
    • 我已经实现了public override void Initialize(string name, NameValueCollection config),但目前默认没有调用它。有什么想法吗?
    • @JesseBuesking 它只会被调用一次(因为 Asp.Net 只保留 MembershipProvider 的单个实例)并且您可以通过 Asp.Net API 访问您的提供者(例如Membership.GetUser()) 用于调用Initialize 方法。
    【解决方案2】:

    问题实际上在于我如何宣布我的会员资格。线

    type="NameSpace.CustomMySqlMembershipProvider"
    

    没有指定定义我的自定义成员资格提供程序的程序集。我右键单击我的项目,选择属性,并从标记为 Assembly name 的字段中获取程序集名称。

    所以如果我的程序集名称是AName,那么这一行应该是

    type="NameSpace.CustomMySqlMembershipProvider, AName"
    

    感谢@Eranga 尝试帮助我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多