Рис. 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