Поставщик членства в Microsoft против пользовательского поставщика против полной системы пользовательского входа - PullRequest
28 голосов
/ 02 декабря 2009

В настоящее время я конвертирую очень старый, но работающий классический сайт ASP в ASP.Net.

Имеет полностью настраиваемую письменную систему управления пользователями. Хотя он работает нормально, он действительно нуждается в обновлении, поскольку я хочу, чтобы он был более гибким для некоторых будущих проектов.

Когда я спросил кого-то об этом, они сказали: «Вам нужно использовать провайдера Microsoft» и прочитали лекцию о том, как Microsoft выпускает все эти вещи бесплатно, и насколько они хороши и должны использоваться как можно чаще.

Я провел немало исследований по этому вопросу (главным образом, просматривая видеоролики на http://asp.net/learn), и меня очень впечатлили некоторые функции, так как, похоже, имеются компоненты перетаскивания для элементов, которые могут занять мне возраст, чтобы написать.

Однако текущая база данных о членстве сложна для объяснения, это полностью пользовательская база данных с множеством внутренних связей ... Она на самом деле не «совместима» со стандартным поставщиком Microsoft.

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

В конце концов, у меня должен работать провайдер членства в Microsoft - единственные настройки, которые мне действительно нужны, - это логин для использования поля имени пользователя / пароля в моей базе данных и сценарий создания пользователя, который содержит много пользовательского кода к нескольким сторонним системам (нуждающимся в предоставлении услуг и т. д.).

Мне было просто интересно, что бы вы сделали, если бы столкнулись с подобной ситуацией?

  1. Используйте поставщика членства Microsoft и каким-то образом заставьте его работать на вас (хотя я хотел бы получить предложения)

  2. Используйте поставщика членства Microsoft, но используйте настраиваемого поставщика, настроенного для вашего кода.

  3. Использовать свое собственное полностью адаптированное решение?

Ответы [ 4 ]

8 голосов
/ 04 декабря 2009

Я был в подобных ситуациях в прошлом. В обоих случаях мы создали пользовательские реализации провайдеров (MembershipProvider, RoleProvider, ProfileProvider) вокруг существующего механизма.

В обоих случаях мы использовали реализации провайдера только для доступа только для чтения, например, чтобы дать нам легкую проверку gubbins в web.config и тому подобное. Код администрирования пользователя был оставлен в покое, так как он работал просто отлично.

8 голосов
/ 04 декабря 2009

Это видео усложняет ситуацию :) Если вы собираетесь внедрить пользовательский провайдер, лучше начать с рефлектора поверх существующего:)

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

Если вы думаете об этом, удаленное предоставление услуг на самом деле не принадлежит поставщику членства, на самом деле это не функция членства - все членство - это предоставление имен пользователей и паролей и аутентификация вокруг них. Мое собственное чувство состоит в том, что вам следует переместить предоставление услуг оттуда и выполнить его на сайте ASP.NET после создания пользователя - даже если это просто вызов хранимой процедуры, когда поставщик членства сделал свое дело. Если вы сделаете это, вы можете обнаружить, что поставщик членства в SQL сделает все, что вам нужно (возможно, и с поставщиками ролей и профилей), и, следовательно, у вас будет гораздо меньше кода для написания!

3 голосов
/ 04 декабря 2009

Используйте мой специализированный MembershipProvider для работы с моими таблицами базы данных.

3 голосов
/ 02 декабря 2009

Если существующий провайдер работает (имеет правильные поля для ваших данных), используйте его для запуска. Вы можете ОЧЕНЬ легко заменить это на поставщика клиента позже (только одно изменение конфигурации).

Осторожно, для этого не существует готового интерфейса управления ASP.NET, вам нужно будет развернуть свой собственный или использовать сторонний.

...