我想为我的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)':找不到合适的方法来覆盖
答案 0 :(得分:0)
一种好方法是使用成员资格提供程序和配置文件提供程序。
会员提供商将管理用户的创建,密码验证,跟踪登录应用程序的人员和时间等。
配置文件提供程序允许您管理用户的多个属性。
因此,您需要执行以下操作:
实施您自己的会员提供商。 请参阅msdn.microsoft.com/en-us/library/f1kyba5e.aspx或msdn.microsoft.com/en-us/library/44w5aswa.aspx
实施您的个人资料提供者(或使用现有的提供者) 请参阅此处msdn.microsoft.com/en-us/library/0580x1f5.aspx或msdn.microsoft.com/en-us/library/ta63b872.aspx
实现一个ProfileCommon类,定义您要为用户使用的属性。 您的个人资料提供者应该知道如何处理ProfileCommon类。
对于ProfileCommon示例,我为我的自定义MongoDB ASPNet提供程序实现了以下内容:github.com/agarcian/MongoDBASPNetProviders/blob/master/ASPNETProvidersForMongoDB/ProfileCommon.cs
下一个示例是我为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>
我希望这会有所帮助。