Каждый пользовательский поставщик Membership должен наследоваться от System.Web.Security.MembershipProvider, как показано ниже:

public class XmlMembershipProvider : MembershipProvider
{
  // ...
}

Наследуя MembershipProvider, вы должны реализовать множество свойств и методов, чтобы выполнить требования Membership API. Эти свойства и методы используются для опроса, создания, обновления и удаления пользователей, а также для извлечения специфической информации о поставщике, такой как требования к паролям. Эти свойства опрашиваются элементами управления безопасностью, представленными в главе 21 (например, свойство RequiresQuestionAndAnswer опрашивается CreateUserWizard для принятия решения относительно того, где отображать текстовые поля для ввода контрольных вопросов и ответов). Вы должны начать с реализации свойств поставщика, поскольку это — простейшая часть всей задачи. Для каждого свойства нужно предусмотреть одну приватную переменную, которая будет содержать состояние соответствующего свойства.

public override string ApplicationName { }
public override bool EnablePasswordBeset { }
public override bool EnablePasswordRetrieval { }
public override int MaxInvalidPasswordAttempts { }
public override int MinRequiredNonAlphanumaricCharacters { }
public override int MinRequiredPasswordLength { }
public override int PasswordAttemptWindow { }
public override MembershipPasswordFormat PasswordFormat { }
public override string PasswordStrengthRegularExpression { }
public override bool RequiresQuestionAndAnswer { }
public override bool RequiresUniqueEmail { }

За подробным описанием этих свойств обращайтесь к главе 21. Все свойства поставщиков описаны в ней, и они имеют то же значение, что и в лежащей в основе реализации. Многие из них включают только средство, доступа get, но не имеют средства доступа set. Но, как же инфраструктура ASP.NET инициализирует эти свойства значениями, сконфигурированными в web.сonfig? Ответ можно найти в исходном базовом классе всех поставщиков — System.Configuration.Provider.ProviderBase. Класс ProviderBase в свою очередь является базовым для MembershipProvider, а потому все классы, которые наследуют MembershipProvider, неявно унаследованы от ProviderBase и обладают базовыми свойствами ProviderBase. Все, что вам нужно сделать — это переопределить метод Initializе. Этот метод принимает два параметра: имя (которое конфигурируется атрибутом Name в web.config) и NameValueCollection (которое содержит ключи и их соответствующие значения для всех настроек, сконфигурированных через web.config). Внутри этого метода вы можете инициализировать приватные члены свойств, показанных ранее.

Рассмотрим шаг за шагом содержимое этой функции для XmlMembershipProvider:

public override void Initialize(string, name, NameValueCollection config)
{
  if (config = null)
  {

 

предыдущая    следующая страница    вначало главы    оглавление

1035

Hosted by uCoz