8

Большинство пользователей используют .NET SqlMembershipProvider, SqlRoleProvider и SqlProfileProvider при разработке сайта с возможностями членства?Большинство пользователей используют .NET SqlMembershipProvider, SqlRoleProvider и SqlProfileProvider?

Или многие люди делают свои собственные провайдеры или даже собственные системы членства?

Каковы ограничения поставщиков SQL, которые заставили бы вас бросить свои собственные?

Можно ли расширить возможности поставщиков SQL для предоставления дополнительных функций?

ориентировочные
Per Scott Gu's Blog, Microsoft provides the source code for the SqlMembershipProvider, так что вы можете настроить его, вместо того чтобы начинать с нуля. Просто FYI.

+4

Чувак! Источник для встроенных провайдеров. Потрясающие! Завтра мой день на работе :-) –

+0

Ха-ха-да. Я был очень взволнован, когда нашел его.Я смог сделать эту сумасшедшую систему, которая динамически устанавливает основную строку соединения на основе текущего поддомена. Обычно вам нужна строка подключения по умолчанию. –

ответ

6

Мы используем все, кроме Провайдера профилей. Провайдер профилей полностью на основе текста и полностью выполняет поиск текста - это становится чрезвычайно медленным, когда ваша база пользователей становится больше. Мы обнаружили, что это гораздо лучшее решение для «роли нашего собственного» профиля в базе данных API членства, которая связана с идентификатором пользователя в членстве.

1

Обычно я использую поставщиков, которые выходят из коробки, основная проблема, с которой я сталкиваюсь, заключается в поиске атрибутов профиля среди пользователей. Например, найти всех пользователей, у которых есть атрибут профиля, называемый Car, который равен true. Это зависит от того, как они хранятся в базовой структуре.

0

В теории они кажутся приятными, но не случайными, если вы производите тестирование единицы, не создавая множество абстрактных оберток.

0

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

Если вам нужна более индивидуальная поддержка (хранение данных в базе данных, не поддерживаемой поставщиками по умолчанию [например, Oracle], провайдер в базе данных, которая уже существует, сильно настраиваемая схема), тогда вы должны перевернуть своих собственных поставщиков.

Что касается меня, моим текущим сайтом была необходима только поддержка основных ролей (и минимальная поддержка профилей), поэтому я пошел с поставщиками по умолчанию.

2

Я развернул свои собственные классы MembershipProvider, используя производные типы MembershipUser, чтобы обернуть пользовательскую схему пользователя, поэтому свойства стиля профиля теперь доступны повсюду как часть производного пользователя через литье.

1

Я использовал SqlMembership раньше, и это довольно приятно, если вам не нужен что-то обычай. Я помню, что мне нужно было что-то вроде firstname и lastname info, и я понял, что для этого нет полей. В конце, а не в расширении, я использовал поле комментария провайдера и добавил туда информацию о имени. Вероятно, это плохая практика/ленивый/взломанный способ, но он работал для меня в трудной ситуации.

+1

Нам также нужно это сделать - мы создали нашу собственную таблицу клиентов со всей дополнительной информацией, которая нам нужна (с ключом в asidnet_membership table userid), а затем создала пользовательский класс регистрации, который обновляет api и наши пользовательские вкладки. Прекрасно работает. –

+1

Или вы можете просто использовать свойства с помощью SqlProfileProvider! Вот для чего это! Но похоже, что есть некоторые проблемы с ним, как упоминает Джим Эванс. –

0

Я использовал как пользовательские классы, так и встроенные. Когда вам нужно попасть в другую базу данных или схему или вам нужна дополнительная информация.

Я отвлек слои, чтобы они работали на логическом уровне и имели слой DAL, который использовал бит data.common.dbprovider, поэтому он был достаточно общим.