реализация настраиваемого поставщика членства, проблема с созданием пользователя - PullRequest
0 голосов
/ 03 мая 2011

Я хотел создать пользовательский поставщик членства для моего приложения asp.net mvc, но количество параметров в методе CreateUser () по умолчанию не то, что я хочу. Поскольку моя таблица User отличается, я хочу передать свои собственные параметры. Вот код, который я использовал для метода 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 (строка, строка, строка, строка, строка, строка, строка, bool, object, out System.Web.Security.MembershipCreateStatus) ': не найден подходящий метод для переопределения

1 Ответ

0 голосов
/ 17 октября 2011

Хорошим подходом является использование как поставщика членства, так и поставщика профиля.

Поставщик членства будет управлять созданием пользователей, проверкой пароля, отслеживанием того, кто и когда входит в ваше приложение, и т. Д..

Поставщик профиля позволяет вам управлять несколькими атрибутами для пользователя.

Итак, вам нужно будет сделать следующее:

  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, определяющий атрибуты, которые вы хотите использовать для своих пользователей.Ваш провайдер Profile должен знать, как обращаться с классом ProfileCommon.

Для примера ProfileCommon я реализовал следующее для своих пользовательских провайдеров ASP.MongoDB: 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>

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...