Поделиться через


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.webroleManager раздела в файле 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 или Forms. Анонимным пользователям нельзя назначить роль. Роли можно использовать независимо от классов ASP.NET Membership или в сочетании с ним.

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

Класс 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 ролей. Значение по умолчанию CookieProtectionValueAll, которое шифрует имена ролей в файле 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)

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

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

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