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 классами.
Чтобы проверить членство в роли программным способом, можно использовать 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 ролей. Значение по умолчанию CookieProtectionValueAll— это шифрование имен ролей в файле cookie и проверка того, что содержимое файла cookie не было изменено.
Свойства
| Имя | Описание |
|---|---|
| ApplicationName |
Возвращает или задает имя приложения для хранения и получения сведений о роли. |
| CacheRolesInCookie |
Возвращает значение, указывающее, кэшируются ли роли текущего пользователя в файле cookie. |
| CookieName |
Возвращает имя файла cookie, в котором кэшируются имена ролей. |
| CookiePath |
Возвращает путь к файлу cookie кэшированных имен ролей. |
| CookieProtectionValue |
Возвращает значение, указывающее, как защищены имена ролей, кэшированные в файле cookie. |
| CookieRequireSSL |
Возвращает значение, указывающее, требуется ли ssl-файл cookie имен ролей для возврата на сервер. |
| CookieSlidingExpiration |
Указывает, будет ли периодически сбрасываться дата и время окончания срока действия файла cookie имен ролей. |
| 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, Boolean) |
Удаляет роль из источника данных. |
| DeleteRole(String) |
Удаляет роль из источника данных. |
| FindUsersInRole(String, String) |
Возвращает список пользователей в указанной роли, в которой имя пользователя содержит указанное имя пользователя, соответствующее. |
| GetAllRoles() |
Возвращает список всех ролей для приложения. |
| GetRolesForUser() |
Возвращает список ролей, в которые входит пользователь, вошедший в систему. |
| GetRolesForUser(String) |
Возвращает список ролей, в которые входит пользователь. |
| GetUsersInRole(String) |
Возвращает список пользователей в указанной роли. |
| IsUserInRole(String, String) |
Возвращает значение, указывающее, находится ли указанный пользователь в указанной роли. API предназначен только для вызова в контексте потока запроса ASP.NET, и в этом случае разрешенного использования он является потокобезопасным. |
| IsUserInRole(String) |
Возвращает значение, указывающее, находится ли пользователь, вошедший в систему, в указанной роли. API предназначен только для вызова в контексте потока запроса ASP.NET, и в этом случае разрешенного использования он является потокобезопасным. |
| RemoveUserFromRole(String, String) |
Удаляет указанного пользователя из указанной роли. |
| RemoveUserFromRoles(String, String[]) |
Удаляет указанного пользователя из указанных ролей. |
| RemoveUsersFromRole(String[], String) |
Удаляет указанных пользователей из указанной роли. |
| RemoveUsersFromRoles(String[], String[]) |
Удаляет указанные имена пользователей из указанных ролей. |
| RoleExists(String) |
Возвращает значение, указывающее, существует ли указанное имя роли в источнике данных роли. |