Roles Класс

Определение

Управляет членством пользователя в ролях для проверки авторизации в приложении ASP.NET. Этот класс не наследуется.

public ref class Roles abstract sealed
public static class Roles
type Roles = class
Public Class Roles
Наследование
Roles

Примеры

В следующем примере показан файл Web.config для приложения, настроенного для использования ASP.NET членства и ASP.NET ролей, а также для SqlRoleProvider хранения сведений о членстве и ролях в базе данных SQL Server. Пользователи проходят проверку подлинности с помощью проверки подлинности с помощью форм, и доступ к приложению разрешен только пользователям в роли "Администраторы".

<configuration>
  <connectionStrings>
    <add name="SqlServices" connectionString="Data Source=localhost;Initial Catalog=aspnetdb;Integrated Security=SSPI;" />
  </connectionStrings>

  <system.web>
    <authentication mode="Forms" >
      <forms loginUrl="login.aspx"
      name=".ASPXFORMSAUTH" />
    </authentication>

    <authorization>
      <deny users="?" />
      <allow roles="Administrators" />
      <deny users="*" />
    </authorization>

    <membership defaultProvider="AspNetSqlProvider" userIsOnlineTimeWindow="15">
    </membership>

    <roleManager defaultProvider="SqlProvider"
      enabled="true"
      cacheRolesInCookie="true"
      cookieName=".ASPROLES"
      cookieTimeout="30"
      cookiePath="/"
      cookieRequireSSL="true"
      cookieSlidingExpiration="true"
      cookieProtection="All" >

      <providers>
        <clear />
        <add
          name="SqlProvider"
          type="System.Web.Security.SqlRoleProvider"
          connectionStringName="SqlServices"
          applicationName="SampleApplication" />
        </providers>

    </roleManager>
  </system.web>
</configuration>

В следующем примере кода программно проверяется, находится ли пользователь, выполнивший вход, в роли "Администраторы", прежде чем разрешить пользователю просматривать роли других пользователей.

Комментарии

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

Пользователи могут принадлежать к нескольким ролям. Например, если ваш сайт является форумом обсуждений, некоторые пользователи могут быть в роли участников и модераторов. Вы можете определить каждую роль, чтобы иметь разные привилегии на сайте, а пользователь, который находится в обеих ролях, будет иметь оба набора привилегий.

Чтобы включить управление ролями для приложения ASP.NET, используйте элемент system.web roleManager раздела в файле Web.config приложения, как показано в следующем примере.

<configuration>
  <connectionStrings>
    <add name="SqlServices" connectionString="Data Source=localhost;Initial Catalog=aspnetdb;Integrated Security=SSPI;" />
  </connectionStrings>

  <system.web>
    <authentication mode="Forms" >
      <forms loginUrl="login.aspx"
      name=".ASPXFORMSAUTH" />
    </authentication>

  <roleManager defaultProvider="SqlProvider"
    enabled="true"
    cacheRolesInCookie="true"
    cookieName=".ASPROLES"
    cookieTimeout="30"
    cookiePath="/"
    cookieRequireSSL="false"
    cookieSlidingExpiration="true"
    cookieProtection="All" >
    <providers>
      <add
        name="SqlProvider"
        type="System.Web.Security.SqlRoleProvider"
        connectionStringName="SqlServices"
        applicationName="SampleApplication" />
      </providers>
    </roleManager>
  </system.web>
</configuration>

Правила авторизации можно указать в файле конфигурации для веб-приложения или программно в коде. Например, следующий раздел авторизации из файла Web.config требует, чтобы пользователи входить в систему (запрещая анонимным пользователям), а затем разрешать доступ только пользователям в роли "Администраторы".

<authorization>
  <deny users="?" />
  <allow roles="Administrators" />
  <deny users="*" />
</authorization>

Если вы используете authorization раздел в файле Web.config приложения для указания авторизации на основе ролей, пользователи приложения должны предоставить удостоверение пользователя, прошедшее проверку подлинности. Вы можете пройти проверку подлинности пользователей с помощью Windows или проверки подлинности с помощью форм. Анонимные пользователи не могут быть назначены роли. Роли можно использовать независимо от классов ASP.NET или в сочетании с нейMembership.

Для программной проверки членства в роли можно использовать Roles класс или Page.User свойство с IsUserInRole методом или использовать Page.User свойство с методом IPrincipal.IsInRole . Пример кода, который программно проверяет членство в роли, см. в разделе "Пример" в этом разделе.

Класс Roles также позволяет создавать и удалять роли, а также добавлять пользователей в роли и удалять их из ролей.

Примечание

Если вы настроили приложение для использования WindowsTokenRoleProvider класса, изменить роли или членство в ролях нельзя. Класс WindowsTokenRoleProvider проверяет членство только в Windows группах безопасности. В этом случае необходимо использовать Windows управления учетными записями пользователей, а не ASP.NET ролей для создания и удаления групп и управления членством в группах.

Сведения о роли можно хранить в нескольких источниках данных.

  • Класс можно использовать для WindowsTokenRoleProvider получения сведений о роли на основе членства в группах Windows.

  • Сведения о роли можно хранить в базе данных SQL Server с помощью SqlRoleProvider класса.

  • Если у вас есть сведения о роли или вы хотите хранить сведения о роли и извлекать их из источника данных, отличного от Windows, хранилища авторизации или SQL Server, можно реализовать настраиваемый поставщик ролей, создав класс, наследующий RoleProvider абстрактный класс. Дополнительные сведения см. в разделе "Реализация поставщика ролей".

Если браузер пользователя принимает файлы cookie, вы можете хранить сведения о роли этого пользователя в файле cookie на компьютере пользователя. На каждом запросе страницы ASP.NET считывает сведения о роли для этого пользователя из файла cookie. Это может повысить производительность приложения, уменьшая объем взаимодействия, необходимый источнику данных для получения сведений о роли. Если сведения о роли для пользователя слишком долго хранятся в файле cookie, ASP.NET хранит только последние использованные сведения о роли в файле cookie, а затем ищет дополнительные сведения о роли в источнике данных по мере необходимости. Если браузер пользователя не поддерживает файлы cookie или файлы cookie отключены, сведения о роли не кэшируются в файле cookie.

Вы можете повысить надежность имен ролей, кэшированных в файле cookie, указав CookieProtectionValue свойство при настройке ASP.NET ролей. По умолчанию CookieProtectionValue используется Allшифрование имен ролей в файле cookie и проверка того, что содержимое файла cookie не было изменено.

Свойства

ApplicationName

Возвращает или задает имя приложения, для которого будут сохраняться и извлекаться сведения о роли.

CacheRolesInCookie

Возвращает значение, указывающее кэшированы ли текущие роли пользователей в файл cookie.

CookieName

Возвращает имя файла cookie, в котором кэшированы имена ролей.

CookiePath

Возвращает путь к файлу cookie с именами ролей.

CookieProtectionValue

Возвращает значение, указывающее, каким образом защищены имена ролей, кэшированные в файле cookie.

CookieRequireSSL

Возвращает значение, показывающее требуется ли файлам cookie с именами ролей протокол SSL для возвращения на сервер.

CookieSlidingExpiration

Указывает, будет ли выполняться периодический сброс даты и времени истечения срока действия файла cookie c именами ролей.

CookieTimeout

Возвращает количество минут до истечения срока действия файла cookie с именами ролей.

CreatePersistentCookie

Возвращает значение, указывающее, создаются ли файлы cookie с именами ролей для определенного сеанса или являются постоянными.

Domain

Возвращает значение домена файла cookie с именами ролей.

Enabled

Возвращает или задает значение, показывающее, включено ли управление ролями для текущего веб-приложения.

MaxCachedResults

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

Provider

Возвращает поставщика роли по умолчанию для приложения.

Providers

Возвращает коллекцию поставщиков ролей для приложения ASP.NET.

Методы

AddUsersToRole(String[], String)

Добавляет указанных пользователей в указанную роль.

AddUsersToRoles(String[], String[])

Добавляет указанных пользователей в указанные роли.

AddUserToRole(String, String)

Добавляет указанного пользователя в указанную роль.

AddUserToRoles(String, String[])

Добавляет указанного пользователя в указанные роли.

CreateRole(String)

Добавляет новую роль в источник данных.

DeleteCookie()

Удаляет файл cookie, в котором кэшированы имена ролей.

DeleteRole(String)

Удаляет роль из источника данных.

DeleteRole(String, Boolean)

Удаляет роль из источника данных.

FindUsersInRole(String, String)

Возвращает список пользователей в указанной роли, у которых имена совпадают с указанными именами пользователей.

GetAllRoles()

Возвращает список всех ролей для приложения.

GetRolesForUser()

Возвращает список ролей, с которыми вошел в систему текущий пользователь.

GetRolesForUser(String)

Возвращает список ролей, в которых состоит пользователь.

GetUsersInRole(String)

Возвращает список пользователей в указанной роли.

IsUserInRole(String)

Возвращает значение, позволяющее определить, находится ли текущий пользователь, вошедший в систему, в указанной роли. Интерфейс API предназначен для вызова только в контексте потока запросов ASP.NET. При таком санкционированном использовании он является потокобезопасным.

IsUserInRole(String, String)

Возвращает значение, позволяющее определить, может ли заданный пользователь выполнять указанную роль. Интерфейс API предназначен для вызова только в контексте потока запросов ASP.NET. При таком санкционированном использовании он является потокобезопасным.

RemoveUserFromRole(String, String)

Удаляет указанного пользователя из указанной роли.

RemoveUserFromRoles(String, String[])

Удаляет указанного пользователя из указанных ролей.

RemoveUsersFromRole(String[], String)

Удаляет указанных пользователей из указанной роли.

RemoveUsersFromRoles(String[], String[])

Удаляет указанные имена пользователей из указанных ролей.

RoleExists(String)

Возвращает значение, позволяющее определить, существует ли указанная роль в источнике данных роли.

Применяется к

См. также раздел