【问题标题】:implementing custom membership provider, problem with usercreate实现自定义会员提供程序,用户创建问题
【发布时间】:2011-05-03 12:16:43
【问题描述】:

我想为我的 asp.net mvc 应用程序创建一个自定义成员资格提供程序,但默认 CreateUser() 方法中的参数数量不是我想要的。因为我的用户表不同,我想传递我自己的参数。这是我用于 UserCreate() 方法的代码:

public override MembershipUser CreateUser(string username,string family,string personcode, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
    {
        //
    }

这里是我得到的错误:

错误 2 MyMemberShipProvider.CreateUser(string, string, string, string, string, string, string, bool, object, out System.Web.Security.MembershipCreateStatus)':找不到合适的方法来覆盖

【问题讨论】:

  • 你的意思是我可以通过从 MemberShipRpovider 继承并覆盖 createuser 来实现我自己的 MemberShipProvider,就像你发送的链接中的内容一样?
  • 是的,这就是我指出类似问题的原因,所以你可以看看他们是如何解决的。

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


【解决方案1】:

一个好的方法是同时使用 Membership Provider 和 Profile 提供程序。

会员资格提供者将管理用户的创建、密码验证、跟踪谁以及何时登录到您的应用等。

配置文件提供程序允许您管理用户的多个属性。

因此,您需要执行以下操作:

  1. 实现您自己的成员资格提供程序。 请参阅 msdn.microsoft.com/en-us/library/f1kyba5e.aspx 或 msdn.microsoft.com/en-us/library/44w5aswa.aspx

  2. 实现您的配置文件提供程序(或使用现有的)。
    请参阅此处 msdn.microsoft.com/en-us/library/0580x1f5.aspx 或 msdn.microsoft.com/en-us/library/ta63b872.aspx

  3. 实现一个 ProfileCommon 类,定义您想为您的用户使用的属性。 您的个人资料提供者应该知道如何处理 ProfileCommon 类。

对于 ProfileCommon 示例,我为我的自定义 MongoDB ASPNet 提供程序实现了以下内容:github.com/agarcian/MongoDBASPNetProviders/blob/master/ASPNETProvidersForMongoDB/ProfileCommon.cs

  1. 配置 WebConfig 部分以定义您的自定义实现。 (参见下面的示例)

下一个示例是我为 MongoDB 开发的自定义成员、角色和配置文件提供程序的一部分。 见https://github.com/agarcian/MongoDBASPNetProviders

这是我在我的应用中使用的配置,以利用我的自定义会员提供程序。

<membership defaultProvider="MongoDBProvider" userIsOnlineTimeWindow="15">
  <providers>
    <clear />
    <add
      name="MongoDBProvider"
      type="ASPNetProvidersForMongoDB.MongoDBMembershipProvider, ASPNetProvidersForMongoDB"
      connectionStringName="MongoProvidersDBConnStr"
      enablePasswordRetrieval="true"
      enablePasswordReset="true"
      requiresQuestionAndAnswer="false"
      writeExceptionsToEventLog="true"
      mongoProviderDatabaseName ="aspnetproviderdb"
      mongoProviderUsersCollectionName="Users"
      applicationName="WebUI4"
      />



  </providers>
</membership>

<roleManager defaultProvider="MongoDBProvider" enabled="true">
  <providers>
    <clear />
    <add applicationName="WebUI4"
        name="MongoDBProvider"
         type="ASPNetProvidersForMongoDB.MongoDBRolesProvider, ASPNetProvidersForMongoDB"
        connectionStringName="MongoProvidersDBConnStr"
         writeExceptionsToEventLog="true"
      mongoProviderDatabaseName ="aspnetproviderdb"
      mongoProviderUsersCollectionName="Roles"
         />
  </providers>
</roleManager>

<profile defaultProvider="MongoDBProvider" inherits="MyCompany.Security.Profile.ProfileCommon">
  <providers>
    <add
      applicationName="WebUI4"
      name="MongoDBProvider"
      type="ASPNetProvidersForMongoDB.MongoDBProfileProvider, ASPNetProvidersForMongoDB"
      connectionStringName="MongoProvidersDBConnStr"
      writeExceptionsToEventLog="true"
      mongoProviderDatabaseName ="aspnetproviderdb"
      mongoProviderUsersCollectionName="Profiles" />
  </providers>
</profile>

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    相关资源
    最近更新 更多