public void Save()
  {
    SaveStore(_FileName);
  }

  public List<SimpleRole> GetRolesForUser(string userName)
  {
    List<SimpleRole> Results = new List<SimpleRole> ();
    foreach (SimpleRole r in Roles)
    {
      if (r.AssignedUsers.Contains(userName))
        Results.Add(r);
    }
    return Results;
  }

  public string[] GetUsersInRole(string roleName)
  {
    SimpleRole Role = GetRole(roleName);
    if (Role != null)
    {
      string[] Results = new string[Role.AssignedUsers.Count];
      Role.AssignedUsers.CopyTo(Results, 0);
      return Results;
    }
    else
    {
      throw new Exception(string.Format(
        "Role with name {0) does not exist!", roleName));
    }
  )

  public SimpleRole GetRole(string roleName)
  {
    return Roles.Find(delegate(SimpleRole role)
    {
      return role.RoleName.Equals(
        roleName, StringComparison.OrdinalIgnoreCase);
    });
  }
}

Эта реализация выглядит очень похоже нa UserStore. Главное отличие состоит в том, что она использует класс SimpleRole вместо SimpleUser и инициализирует класс XmlSerializer другим типом. Кроме того, отличается функция опроса хранилища.

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

Реализация классов поставщиков

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

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

1034

Hosted by uCoz