Как реализовать поставщика ролей ASP.NET? - PullRequest
0 голосов
/ 25 марта 2011

У меня есть несколько вопросов на высшем уровне о членстве в ASP.NET и поставщиках ролей.Я провел некоторые поиски, но мне трудно найти некоторые уроки для неспециалистов.Я уже некоторое время кодирую в ASP.NET, но единственный реальный опыт, который у меня есть с аутентификацией, - это использование FormsAuthentication.SetAuthCookie(usernameFromDatabase, false);

Когда я использую метод SetAuthCookie(), описанный выше, я использую ASP.NETПоставщик членства?Поправь меня, если я ошибаюсь, пожалуйста, но я так не думаю.Я просто устанавливаю cookie для аутентификации, верно?Я обычно реализую свои собственные пользовательские методы в своих хранилищах данных, например GetUser_ByUsername(string username), который затем обращается к ORM и получает нужного пользователя.

  1. Есть ли у провайдеров членства и ролей свое собственное хранилище данных?
  2. Что, если я хочу использовать свое собственное хранилище данных?
  3. Нужно ли мне реализовывать своего собственного поставщика членства / роли и как это сделать?
  4. Илимой способ установки файла cookie для проверки подлинности, а затем использовать мои собственные методы поиска и т. д., лучший способ сделать пользовательский поставщик членства / роли?

Я просто ищу краткое руководство / объяснениеэтой системы.Если у вас есть какие-либо хорошие рекомендации для меня, я с удовольствием посмотрю:)

Ответы [ 3 ]

2 голосов
/ 25 марта 2011

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

  • У провайдеров членства и ролей есть свое собственное хранилище данных?

Они могут, да. Существует абстрактная реализация, которую вы можете создать подкласс для ваших конкретных потребностей данных. Существует SqlMembershipProvider, который вы можете использовать прямо из коробки, вам просто нужна база данных, чтобы указывать и создавать необходимые таблицы. Об этом классе довольно много информации, например, здесь или здесь .

  • Что если я захочу использовать собственное хранилище данных?

SqlMembershipProvider делает, но посмотрите эту альтернативную инфраструктуру MySQL , если вам интересно посмотреть, как это делает другая СУБД.

  • Нужно ли мне внедрять моего собственного поставщика членства / роли, и как можно это сделать?

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

  • Или мой способ установки файла cookie для проверки подлинности, а затем использования моих собственных методов поиска и т. Д. - лучший способ создать пользовательский поставщик членства / роли?

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

2 голосов
/ 25 марта 2011

Реализация поставщика членства не так уж сложно. Обратите внимание, что вам нужно только реализовать методы, которые вы планируете использовать. Поставщик членства должен рассматриваться как средство взаимодействия с информацией о вашем пользователе с точки зрения аутентификации. Он не создаст для вас файл cookie для аутентификации; Вы делаете это после успешного вызова метода ValidateUser на провайдере. Это позволит вам разрабатывать приложение на основе интерфейса провайдера и легко изменять, какого провайдера вы хотите использовать, через конфигурацию, а не переписывать код приложения. Я успешно реализовал несколько разных провайдеров членства, используя мою собственную схему, которая поддерживает встроенную и гибридную встроенную / активную аутентификацию каталогов. Более подробная информация доступна по ссылкам ниже:

1 голос
/ 25 марта 2011

1 - Да, если вы используете встроенных поставщиков членства / роли, они используют таблицы, созданные либо в отдельной базе данных, либо в существующей.Для создания этих таблиц вы используете инструмент aspnet_regsql.exe - он проведет вас через мастера.Кроме того, он также может быть вызван из командной строки с другими аргументами, чтобы пропустить мастер. Это - некоторая информация от MS о создании необходимых БД / таблиц в вашей БД.

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

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

4 - я бы сказал, что лучше использовать встроенную функциональность, которую ASP.NET предоставляет для членства и ролей.

...