Рис. 26.2. Дизайн решения пользовательского поставщика

Проектирование и реализация
пользовательского хранилища

После того как спроектирована общая архитектура, можно начать думать о лежащем в основе хранилище данных. В данном примере хранилище данных будет состоять из XML-файла для хранения пользователей и XML-файла для хранения ролей. Чтобы максимально возможно облегчить доступ к этим файлам, используем XML-сериализацию в качестве первичного механизма чтения и записи этих файлов. Таким образом, понадобятся некоторые классы для представления данных, сохраняемых в XML-файлах либо как общедоступные поля, либо как свойства, что показано ниже:

public class SimpleUser
{
  public Guid UserKey = Guid.Empty;
  public string UserName = "";
  public string Password = "";
  public string Email = "";
  public DateTime CreationDate = DateTime.Now;
  public DateTime LastActivityDate = DateTime.MinValue;
  public DateTime LastLoginDate = DateTime.MinValue;
  public DateTime LastPasswordChangeDate = DateTime.MinValue;
  public string PasswordQuestion = "";
  public string PasswordAnswer = "";
  public string Comment;
}

public class SimpleRole
{
  public string RoleName = "";
  public StringCollection AssignedUsers = new StringCollection();
}

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

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

1028

Hosted by uCoz