Roles Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Gere a adesão de utilizadores a funções para verificação de autorizações numa aplicação ASP.NET. Esta classe não pode ser herdada.
public ref class Roles abstract sealed
public static class Roles
type Roles = class
Public Class Roles
- Herança
-
Roles
Exemplos
O exemplo seguinte mostra o ficheiro Web.config de uma aplicação configurado para usar tanto os papéis de ASP.NET adesão como ASP.NET e para usar o SqlRoleProvider para armazenar informações de pertença e funções numa base de dados SQL Server. Os utilizadores são autenticados com autenticação de formulários e apenas os utilizadores no papel de Administradores têm acesso à aplicação.
<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>
O exemplo de código seguinte verifica programaticamente se o utilizador iniciado está no papel de Administradores antes de permitir que o utilizador veja os papéis dos outros utilizadores.
Observações
A gestão de papéis do ASP.NET permite-lhe gerir a autorização da sua aplicação com base em grupos de utilizadores, denominados papéis. Ao atribuir papéis aos utilizadores, pode controlar o acesso a diferentes partes ou funcionalidades da sua aplicação Web com base no papel em vez de, ou além de, especificar autorizações com base no nome de utilizador. Por exemplo, uma candidatura de empregado pode ter funções como Gestores, Empregados, Diretores, etc., onde diferentes privilégios são especificados para cada função.
Os utilizadores podem pertencer a mais do que uma função. Por exemplo, se o seu site for um fórum de discussão, alguns utilizadores podem estar tanto como Membros como Moderadores. Podes definir cada função como tendo privilégios diferentes no site, e um utilizador que esteja em ambos os papéis teria então ambos os conjuntos de privilégios.
Para ativar a gestão de funções para a sua aplicação de ASP.NET, use o elemento roleManager da secção system.web no ficheiro Web.config da sua aplicação, como mostrado no exemplo seguinte.
<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>
Pode especificar regras de autorização no ficheiro de configuração da sua aplicação Web ou programaticamente no seu código. Por exemplo, a seguinte secção de autorização de um ficheiro Web.config exige que os utilizadores entrem (negando utilizadores anónimos), permitindo apenas o acesso a utilizadores no papel de Administradores.
<authorization>
<deny users="?" />
<allow roles="Administrators" />
<deny users="*" />
</authorization>
Se usar a authorization secção do ficheiro Web.config da sua aplicação para especificar autorizações com base em funções, os utilizadores da sua aplicação devem fornecer uma identidade de utilizador autenticada. Pode autenticar utilizadores usando autenticação do Windows ou Formulários. Utilizadores anónimos não podem ser atribuídos a uma função. Os papéis podem ser usados independentemente ou em conjunto com as classes ASP.NET Membership.
Para verificar a pertença aos papéis programaticamente, pode usar a Roles classe ou a Page.User propriedade com o IsUserInRole método, ou pode usar a Page.User propriedade com o IPrincipal.IsInRole método. Para código de exemplo que verifica programaticamente a pertença a papéis, veja a secção de Exemplo neste tópico.
A Roles classe também permite criar e eliminar papéis e adicionar ou remover utilizadores de papéis.
Note
Se configurou a sua aplicação para usar a WindowsTokenRoleProvider classe, não pode modificar papéis ou pertença a papéis. A classe WindowsTokenRoleProvider verifica a pertença apenas a Windows grupos de segurança. Neste caso, deve usar a gestão de contas de utilizador do Windows em vez dos papéis ASP.NET para criar e eliminar grupos e gerir a pertença a grupos.
Pode armazenar informação de funções em várias fontes de dados.
Pode usar a classe WindowsTokenRoleProvider para obter informação de funções com base na pertença a Windows grupos.
Pode armazenar informação de função numa base de dados SQL Server usando a classe SqlRoleProvider.
Se tiver informação de função existente, ou quiser armazenar informação de função e recuperar informação de função de uma fonte de dados diferente de Windows, uma Loja de Autorização ou SQL Server, pode implementar um fornecedor de funções personalizado criando uma classe que herde a classe abstrata RoleProvider. Para mais informações, consulte Implementação de um Fornecedor de Papéis.
Se o navegador de um utilizador aceitar cookies, pode armazenar a informação do papel desse utilizador num cookie no computador do utilizador. Em cada pedido de página, o ASP.NET lê a informação do papel desse utilizador a partir do cookie. Isto pode melhorar o desempenho da aplicação ao reduzir a quantidade de comunicação necessária com a fonte de dados para recuperar a informação do papel. Se a informação do papel de um utilizador for demasiado longa para armazenar num cookie, o ASP.NET armazena apenas a informação do papel mais recentemente usada no cookie e depois procura informação adicional de função na fonte de dados conforme necessário. Se o navegador do utilizador não suportar cookies ou os cookies forem desativados, a informação do papel não é armazenada em cache num cookie.
Pode melhorar a fiabilidade dos nomes de papéis armazenados em cache num cookie especificando uma propriedade CookieProtectionValue quando configura ASP.NET papéis. O padrão CookieProtectionValue é All, que encripta os nomes dos papéis no cookie e valida que o conteúdo do cookie não foi alterado.
Propriedades
| Name | Description |
|---|---|
| ApplicationName |
Obtém ou define o nome da aplicação para armazenar e recuperar a informação do papel. |
| CacheRolesInCookie |
Recebe um valor que indica se os papéis do utilizador atual estão armazenados em cache num cookie. |
| CookieName |
Obtém o nome do cookie onde os nomes dos papéis são armazenados em cache. |
| CookiePath |
Obtém o caminho para o cookie de nomes de papéis em cache. |
| CookieProtectionValue |
Recebe um valor que indica como os nomes de papéis armazenados em cache num cookie são protegidos. |
| CookieRequireSSL |
Recebe um valor que indica se o cookie dos nomes dos papéis requer SSL para ser devolvido ao servidor. |
| CookieSlidingExpiration |
Indica se os nomes dos papéis serão reiniciados periodicamente, a data e hora do cookie. |
| CookieTimeout |
Recebe o número de minutos antes do cookie do papel expirar. |
| CreatePersistentCookie |
Recebe um valor que indica se o cookie de nomes de papéis é baseado em sessões ou persistente. |
| Domain |
Obtém o valor do domínio do cookie de nomes de papéis. |
| Enabled |
Recebe ou define um valor que indica se a gestão de funções está ativada para a aplicação Web atual. |
| MaxCachedResults |
Obtém o número máximo de nomes de papéis a armazenar em cache para um utilizador. |
| Provider |
Obtém o fornecedor de funções padrão para a aplicação. |
| Providers |
Obtém uma coleção dos fornecedores de funções para a aplicação ASP.NET. |
Métodos
| Name | Description |
|---|---|
| AddUsersToRole(String[], String) |
Adiciona os utilizadores especificados ao papel especificado. |
| AddUsersToRoles(String[], String[]) |
Adiciona os utilizadores especificados aos papéis especificados. |
| AddUserToRole(String, String) |
Adiciona o utilizador especificado ao papel especificado. |
| AddUserToRoles(String, String[]) |
Adiciona o utilizador especificado aos papéis especificados. |
| CreateRole(String) |
Adiciona um novo papel à fonte de dados. |
| DeleteCookie() |
Apaga o cookie onde os nomes dos papéis estão guardados em cache. |
| DeleteRole(String, Boolean) |
Remove um papel da fonte de dados. |
| DeleteRole(String) |
Remove um papel da fonte de dados. |
| FindUsersInRole(String, String) |
Obtém uma lista de utilizadores num papel especificado onde o nome de utilizador contém o nome de utilizador especificado para corresponder. |
| GetAllRoles() |
Obtém uma lista de todas as funções da candidatura. |
| GetRolesForUser() |
Recebe uma lista dos papéis em que o utilizador atualmente ligado está. |
| GetRolesForUser(String) |
Obtém uma lista dos papéis em que um utilizador se encontra. |
| GetUsersInRole(String) |
Obtém uma lista de utilizadores na função especificada. |
| IsUserInRole(String, String) |
Recebe um valor que indica se o utilizador especificado está no papel especificado. A API destina-se apenas a ser chamada no contexto de um thread de pedido ASP.NET, e nesse caso de uso sancionado é segura para threads. |
| IsUserInRole(String) |
Recebe um valor que indica se o utilizador atualmente ligado está no papel especificado. A API destina-se apenas a ser chamada no contexto de um thread de pedido ASP.NET, e nesse caso de uso sancionado é segura para threads. |
| RemoveUserFromRole(String, String) |
Remove o utilizador especificado do papel especificado. |
| RemoveUserFromRoles(String, String[]) |
Remove o utilizador especificado dos papéis especificados. |
| RemoveUsersFromRole(String[], String) |
Remove os utilizadores especificados do papel especificado. |
| RemoveUsersFromRoles(String[], String[]) |
Remove os nomes de utilizador especificados dos papéis especificados. |
| RoleExists(String) |
Recebe um valor que indica se o nome do papel especificado já existe na fonte de dados do papel. |