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 или 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 ролей. Значение по умолчанию 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) |
Возвращает значение, позволяющее определить, существует ли указанная роль в источнике данных роли. |