实现自定义成员资格提供程序,usercreate的问题

时间:2011-05-03 12:16:43

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

我想为我的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)':找不到合适的方法来覆盖

1 个答案:

答案 0 :(得分:0)

一种好方法是使用成员资格提供程序和配置文件提供程序。

会员提供商将管理用户的创建,密码验证,跟踪登录应用程序的人员和时间等。

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

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

  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类。

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

    1. 配置WebConfig部分以定义自定义实现。 (见下面的样本)
    2. 下一个示例是我为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>
      

      我希望这会有所帮助。