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 as funções de associação ASP.NET e ASP.NET e para usar o SqlRoleProvider para armazenar informações de associação e função em um banco de dados do SQL Server. Os usuários são autenticados com a autenticação de formulários e somente os usuários na função Administradores têm permissão para acessar o 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 de, especificar 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 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, em seguida, permite que apenas os 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 em 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 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 em 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 em e recuperar informações de função de uma fonte de dados diferente do Windows, um Repositório de Autorização ou 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ção.

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 estiverem desabilitados, 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

ApplicationName

Obtém ou define o nome do aplicativo no qual as informações de função serão armazenadas e recuperadas.

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 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 o SSL para ser retornado ao servidor.

CookieSlidingExpiration

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

CookieTimeout

Obtém o número de minutos antes da expiração do cookie de funções.

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 ser armazenado em cache para um usuário.

Provider

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

Providers

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

Métodos

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)

Remove uma função da fonte de dados.

DeleteRole(String, Boolean)

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 nas quais o usuário conectado no momento está.

GetRolesForUser(String)

Obtém uma lista das funções de que o usuário faz parte.

GetUsersInRole(String)

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

IsUserInRole(String)

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

IsUserInRole(String, String)

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

RemoveUserFromRole(String, String)

Remove o usuário indicado 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