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 SQL Server. Os usuários são autenticados com autenticação de formulários e somente usuários na função Administradores têm acesso permitido 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ção 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 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 requer que os usuários façam logon (negando usuários anônimos) e, em seguida, 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 em funções, os usuários do aplicativo deverão fornecer uma identidade de usuário autenticada. Você pode autenticar usuários usando Windows ou autenticação 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.NETMembership.

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 Windows. Nesse caso, você deve usar Windows gerenciamento de conta de usuário 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 de Windows.

  • Você pode armazenar informações de função em um banco de dados 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 de 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çõ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

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