Compartilhar via


Roles Classe

Definição

Gerencia a associação do usuário em funções para verificação de autorização em um aplicativo ASP.NET. Essa 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 a seguir mostra o arquivo Web.config para um aplicativo configurado para usar ASP.NET associação e ASP.NET funções e para usar as SqlRoleProvider informações de associação e função em um banco de dados do SQL Server. Os usuários são autenticados com autenticação de formulários e somente usuários na função Administradores têm permissão de acesso ao aplicativo.

<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 a seguir verifica programaticamente se o usuário conectado está na função Administradores antes de permitir que o usuário exiba as funções de outros usuários.

Comentários

ASP.NET gerenciamento de funções permite que você gerencie a autorização para seu aplicativo com base em grupos de usuários, conhecidos como funções. Ao atribuir usuários a funções, você pode controlar o acesso a diferentes partes ou recursos de seu aplicativo Web com base na função em vez de, ou além disso, especificar a autorização com base no nome de usuário. Por exemplo, um aplicativo de funcionário pode ter funções como Gerentes, Funcionários, Diretores e assim por diante, em que privilégios diferentes são especificados para cada função.

Os usuários podem pertencer a mais de uma função. Por exemplo, se o seu site for um fórum de discussão, alguns usuários poderão estar na função de Membros e Moderadores. Você pode definir cada função para ter privilégios diferentes no site e um usuário que está em ambas as funções teria os dois conjuntos de privilégios.

Para habilitar o gerenciamento de função para seu aplicativo ASP.NET, use o elemento roleManager da system.web seção no arquivo Web.config para seu aplicativo, conforme mostrado no exemplo a seguir.

<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>

Você pode especificar regras de autorização no arquivo de configuração para seu aplicativo Web ou programaticamente em seu código. Por exemplo, a seção de autorização a seguir de um arquivo Web.config exige que os usuários façam logon (negando usuários anônimos) e permite que apenas usuários na função Administradores tenham acesso.

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

Se você usar a authorization seção no arquivo Web.config do aplicativo para especificar a autorização com base nas funções, os usuários do aplicativo deverão fornecer uma identidade de usuário autenticada. Você pode autenticar usuários usando a autenticação do Windows ou do Forms. Usuários anônimos não podem ser atribuídos a uma função. As funções podem ser usadas independentemente ou em conjunto com as classes ASP.NET Membership .

Para verificar a associação de função programaticamente, você 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 obter um código de exemplo que verifica programaticamente a associação de função, consulte a seção Exemplo neste tópico.

A Roles classe também permite que você crie e exclua funções e adicione usuários a ou remova usuários de funções.

Observação

Se você configurou seu aplicativo para usar a WindowsTokenRoleProvider classe, não poderá modificar funções ou associação de função. A WindowsTokenRoleProvider classe verifica apenas a associação a grupos de segurança do Windows. Nesse caso, você deve usar o gerenciamento de conta de usuário do Windows em vez de ASP.NET funções para criar e excluir grupos e gerenciar a associação de grupo.

Você pode armazenar informações de função em várias fontes de dados.

  • Você pode usar a WindowsTokenRoleProvider classe para recuperar informações de função com base na associação em grupos do Windows.

  • Você pode armazenar informações de função em um banco de dados do SQL Server usando a SqlRoleProvider classe.

  • Se você tiver informações de função existentes ou quiser armazenar informações de função e recuperar informações de função de uma fonte de dados diferente do Windows, de um Repositório de Autorização ou do SQL Server, poderá implementar um provedor de função personalizado criando uma classe que herda a RoleProvider classe abstrata. Para obter mais informações, consulte Implementando um provedor de funções.

Se o navegador de um usuário aceitar cookies, você poderá armazenar informações de função para esse usuário em um cookie no computador do usuário. Em cada solicitação de página, ASP.NET lê as informações de função desse usuário do cookie. Isso pode melhorar o desempenho do aplicativo reduzindo a quantidade de comunicação necessária com a fonte de dados para recuperar informações de função. Se as informações de função de um usuário forem muito longas para serem armazenadas em um cookie, ASP.NET armazenará apenas as informações de função usadas mais recentemente no cookie e procurará informações de função adicionais na fonte de dados, conforme necessário. Se o navegador do usuário não oferecer suporte a cookies ou cookies estiver desabilitado, as informações de função não serão armazenadas em cache em um cookie.

Você pode melhorar a confiabilidade dos nomes de função armazenados em cache em um cookie especificando uma CookieProtectionValue propriedade ao configurar ASP.NET funções. O padrão CookieProtectionValue é All, que criptografa nomes de função no cookie e valida que o conteúdo do cookie não foi alterado.

Propriedades

Nome Description
ApplicationName

Obtém ou define o nome do aplicativo para o qual armazenar e recuperar informações de função.

CacheRolesInCookie

Obtém um valor que indica se as funções do usuário atual são armazenadas em cache em um cookie.

CookieName

Obtém o nome do cookie em que os nomes de função são armazenados em cache.

CookiePath

Obtém o caminho para o cookie de nomes de função armazenados em cache.

CookieProtectionValue

Obtém um valor que indica como os nomes de função armazenados em cache em um cookie são protegidos.

CookieRequireSSL

Obtém um valor que indica se o cookie de nomes de função requer SSL para ser retornado ao servidor.

CookieSlidingExpiration

Indica se a data e hora de expiração do cookie de nomes de função serão redefinidas periodicamente.

CookieTimeout

Obtém o número de minutos antes que o cookie de funções expire.

CreatePersistentCookie

Obtém um valor que indica se o cookie de nomes de função é baseado em sessão ou persistente.

Domain

Obtém o valor do domínio do cookie de nomes de função.

Enabled

Obtém ou define um valor que indica se o gerenciamento de função está habilitado para o aplicativo Web atual.

MaxCachedResults

Obtém o número máximo de nomes de função a serem armazenados em cache para um usuário.

Provider

Obtém o provedor de função padrão para o aplicativo.

Providers

Obtém uma coleção dos provedores de função para o aplicativo ASP.NET.

Métodos

Nome Description
AddUsersToRole(String[], String)

Adiciona os usuários especificados à função especificada.

AddUsersToRoles(String[], String[])

Adiciona os usuários especificados às funções especificadas.

AddUserToRole(String, String)

Adiciona o usuário especificado à função especificada.

AddUserToRoles(String, String[])

Adiciona o usuário especificado às funções especificadas.

CreateRole(String)

Adiciona uma nova função à fonte de dados.

DeleteCookie()

Exclui o cookie em que os nomes de função são armazenados em cache.

DeleteRole(String, Boolean)

Remove uma função da fonte de dados.

DeleteRole(String)

Remove uma função da fonte de dados.

FindUsersInRole(String, String)

Obtém uma lista de usuários em uma função especificada em que o nome de usuário contém o nome de usuário especificado a ser correspondido.

GetAllRoles()

Obtém uma lista de todas as funções do aplicativo.

GetRolesForUser()

Obtém uma lista das funções em que o usuário conectado no momento está.

GetRolesForUser(String)

Obtém uma lista das funções em que um usuário está.

GetUsersInRole(String)

Obtém uma lista de usuários na função especificada.

IsUserInRole(String, String)

Obtém um valor que indica se o usuário especificado está na função especificada. A API destina-se apenas a ser chamada dentro do contexto de um thread de solicitação ASP.NET e, nesse caso de uso sancionado, é thread-safe.

IsUserInRole(String)

Obtém um valor que indica se o usuário conectado no momento está na função especificada. A API destina-se apenas a ser chamada dentro do contexto de um thread de solicitação ASP.NET e, nesse caso de uso sancionado, é thread-safe.

RemoveUserFromRole(String, String)

Remove o usuário especificado da função especificada.

RemoveUserFromRoles(String, String[])

Remove o usuário especificado das funções especificadas.

RemoveUsersFromRole(String[], String)

Remove os usuários especificados da função especificada.

RemoveUsersFromRoles(String[], String[])

Remove os nomes de usuário especificados das funções especificadas.

RoleExists(String)

Obtém um valor que indica se o nome da função especificada já existe na fonte de dados de função.

Aplica-se a

Confira também