Можно ли передать дополнительные пользовательские данные пользовательскому поставщику членства ASP.NET? - PullRequest
3 голосов
/ 09 января 2012

Я внедряю своего собственного провайдера членства, и мне нужно ввести некоторые дополнительные поля (такие как имя, фамилия, страна и т. Д.).

Я знаю, что могу расширить класс MembershipUser и привести к нему при возврате объекта пользователя от моего провайдера. То, что я не могу найти, как это сделать и, если возможно, это то, как на самом деле передать эти пользовательские свойства моему провайдеру, когда я создаю нового пользователя Membership.CreateUser(...) во время регистрации пользователя.

Возможно ли это вообще? Если да, то как это можно сделать?

Спасибо

UPDATE

Статья MSDN говорит

Однако эта перегрузка не будет вызываться классом Membership или элементы управления, основанные на классе Membership, такие как Элемент управления CreateUserWizard. Чтобы вызвать этот метод из приложения, приведите экземпляр MembershipProvider, на который ссылается членство укажите в качестве типа настраиваемого участника членства, а затем позвоните CreateUseroverload напрямую.

Membership в данном случае является ссылкой на экземпляр класса и в то же время сам по себе является классом.

Ни то, ни другое

((CustomMembershipProvider)Membership).CreateUser(...);

ни

(CustomMembershipProvider)Membership.CreateUser(...);

работает.

Как мне разыграть его в этом случае?

ОБНОВЛЕНИЕ: см. Мой ответ.

Ответы [ 3 ]

3 голосов
/ 16 января 2012

Я понял, как сделать правильное приведение, поэтому вот оно:

пользовательский членский член:

public sealed class CustomMembershipProvider : MembershipProvider {...}

пользовательский членский член:

public class CustomMembershipUser : MembershipUser {...}

Комусоздать нового пользовательского пользователя:

CustomMembershipProvider myProvider = (CustomMembershipProvider)Membership.Provider;
CustomMembershipUser user = (CustomMembershipUser)myProvider.CreateUser(...);

Чтобы получить пользовательского пользователя:

CustomMembershipProvider myProvider = CustomMembershipProvider)Membership.Provider;
CustomMembershipUser user = (CustomMembershipUser)myProvider.GetUser(...);

В этой статье показано, как реализовать пользовательского пользователя: http://msdn.microsoft.com/en-us/library/ms366730.aspx

2 голосов
/ 09 января 2012

Вместо расширения MembershipUser вы можете добавить дополнительные данные профиля для пользователя.

Например, в ваш файл конфигурации может быть добавлено следующее:

<profile>
    <properties>
        <add name="FirstName"/>
        <add name="LastName"/>
        <add name="Address"/>
        <add name="City"/>
        <add name="State"/>
        <add name="Zip"/>
    <properties>
<profile>

Это позволит ASP.NET создать класс ProfileCommon, который будет включать все свойства, указанные в файле конфигурации.

Вот документация для Profile Свойства.

0 голосов
/ 09 января 2012

Вы можете добавить «базовую» информацию о пользователе, внедрив Профили .Существуют такие вопросы, как безопасность, форматирование и т. Д., Которые нужно учитывать, но это простое решение.Или вы можете внедрить пользовательского провайдера членства.

...