Partilhar via


Noções básicas sobre gerenciamento de papéis

Gerenciamento de funções em ASP.NET ajuda você a gerenciar autorizações, permitindo que você especifique os recursos que os usuários do seu aplicativo terão permissão para acessar.Gerenciamento de funções permite que você trate grupos de usuários como uma unidade, pela atribuição de usuários a funções, como gerente, vendedor, membro e assim por diante.(No Windows, você cria funções atribuindo usuários a grupos, como Administradores, Usuários Avançados e assim por diante.)

Depois de ter estabelecido as funções, você pode criar regras de acesso no seu aplicativo.Por exemplo, seu site poderia incluir um conjunto de páginas que você deseja exibir somente para membros.Da mesma forma, você poderia mostrar ou ocultar parte de uma página baseado em se o usuário atual for um gerente.Pelo uso de funções, você pode estabelecer esses tipos de regras independentemente dos usuários de aplicativos individuais.Por exemplo, você não precisará conceder a membros individuais de seu site o acesso somente às páginas de membros.Em vez disso, você pode conceder acesso à função de membro e, em seguida, basta adicionar e remover usuários dessa função enquanto as pessoas se cadastram ou permitir que seus cadastros se expirem.

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 nas funções de membro e moderador, ao mesmo tempo.Você pode definir cada função para ter diferentes direitos no site, e um usuário que estiver em ambas as funções teria então ambos os direitos.

Mesmo se o aplicativo tiver apenas alguns usuários, você talvez ainda ache conveniente criar funções.Funções oferecem flexibilidade para alterar permissões e para adicionar e remover usuários sem ter que fazer mudanças em todo o site.Enquanto você define mais regras de acesso para seu aplicativo, as funções se tornam um modo mais conveniente de aplicar as alterações aos grupos de usuários.

Funções e regras de acesso

O objetivo principal de estabelecer funções é fornecer uma maneira fácil de gerenciar as regras de acesso para os grupos de usuários.Você cria os usuários e, em então, os atribui às funções (no Windows, aos grupos).Um uso típico é, assim, criar um conjunto de páginas que você deseja restringir para alguns usuários.Normalmente isola-se essas páginas restritas em uma pasta separada.Assim, você pode estabelecer regras que concedam ou neguem acesso a pastas restritas.Por exemplo, você pode configurar o site para que membros ou gerentes tenham acesso às páginas na pasta restrita e todos os outros usuários tenham acesso negado.Se um usuário não autorizado tentar visualizar uma página restrita, ou ele verá um erro ou será redirecionado para uma página que você especificar.

Gerenciamento de funções, Identidade de Usuário e Participação

Para trabalhar com funções, você deve ser capaz de identificar os usuários do seu aplicativo para que você possa determinar quando o usuário está em uma função específica.Você pode configurar seu aplicativo para estabelecer a identidade de usuário de duas maneiras: Autenticação do Windows e autenticação de formulários.Se o seu aplicativo é executado em uma LAN (isto é, em um aplicativo de intranet com base em domínio), você poderá identificar os usuários usando o nome da conta de domínio do Windows.Nesse caso, as funções do usuário são os grupos aos quais o usuário pertence no Windows.

Em aplicativos na Internet ou em outros cenários onde não é prático usar contas do Windows, você pode usar a autenticação por formulários para identificar o usuário.Para esta tarefa, normalmente cria-se uma página onde os usuários possam digitar um nome de usuário e senha e, em seguida, valida-se as credenciais do usuário.Os controles de login do ASP.NET podem executar uma grande parte dessa tarefa para você, ou você pode criar uma página de login e usar a classe FormsAuthentication para estabelecer uma identidade de usuário.

Observação:

As funções não funcionam com usuários que não estabeleceram uma identidade no aplicativo (usuários anônimos).

Se você usar controles de login ou autenticação por formulários para estabelecer a identidade do usuário, você também poderá usar gerenciamento de funções junto com a participação.Nesse cenário, usa-se a participação para definir os usuários e senhas.Assim, você pode usar gerenciamento de funções para defini-las e atribuir aos membros essas funções.No entanto, gerenciamento de funções não depende da participação.Enquanto você tem um caminho em seu aplicativo para definir a identidade do usuário, você pode usar gerenciamento de funções para autorização.

Função de gerenciamento e o serviço de funções ASP.NET

Você pode acessar as funções como um serviço do Windows Communication Framework (WCF) usando o serviço de funções do ASP.NET.O serviço de funções permite que você verifique funções de usuário em qualquer aplicativo que pode ler ou fazer uso de um serviço WCF.Por exemplo, você pode verificar as funções de usuário de um aplicativo Windows Forms, de um aplicativo Web, ou de um aplicativo que não usa o Framework .NET.Para mais informações sobre o serviço de funções em aplicativos, consulte Visão geral do serviço de funções Windows Communication Foundation.

Função de gerenciamento de API

Gerenciamento de função não está limitado a restrição de direitos em páginas ou pastas.Gerenciamento de função fornece uma API que pode ser usada para determinar programaticamente se um usuário está em uma função.Isso permite que você escreva código para usufruir das funções e executar quaisquer tarefas de aplicativo com base não apenas em quem o usuário é, mas também em quais funções ele está.

Determinando-se a identidade do usuário em seu aplicativo, pode-se usar os métodos API de Gerenciamento de Função para criar funções, adicionar usuários a elas e obter informações sobre quais usuários estão em que funções.Esses métodos permitem que você crie sua própria interface para gerenciar funções.

Se o seu aplicativo usa autenticação do Windows, a API de Gerenciamento de Funções oferece menos recursos para tanto.Por exemplo, você não poderá usar o gerenciamento de funções para criar novas funções.Em vez disso, usa-se o gerenciamento de usuários e grupos do Windows para criar contas e grupos e atribuir usuários aos grupos.Gerenciamento de função, portanto, é capaz de ler informações do usuário ou do grupo no Windows de forma que se possa usar essas informações para autenticação.

Se você estiver usando o serviço de funções do ASP.NET, pode-se checar se um usuário pertence a uma função específica, ou recuperar todas as funções para um dado usuário.No entanto, não é possível gerenciar funções por meio da API de serviço de funções.

Como o Gerenciamento de Função do ASP.NET funciona

Para trabalhar com gerenciamento de função, você primeiro a habilita e, opcionalmente, configura regras de acesso que podem usufruir das funções.Pode-se então, usar as funcionalidades de gerenciamento de função em tempo de execução para trabalhar com as funções.

Configuração de Gerenciamento de Função

Para usar o Gerenciamento de Função do ASP.NET, deve-se habilitá-lo no arquivo web.config do aplicativo usando opções como as seguintes:

<roleManager 
    enabled="true" 
    cacheRolesInCookie="true" >
</roleManager>

Um uso típico de funções é estabelecer regras que permitam ou que neguem acesso a páginas ou pastas.Você pode configurar tais regras de acesso na seção authorization do arquivo web.config.O exemplo a seguir mostra como habilitar usuários na função de membro para que possam visualizar páginas da pasta denominada MemberPages, e negar acesso aos outros:

<configuration>
  <location path="MemberPages">
    <system.web>
      <authorization>
        <allow roles="members" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
  <!-- other configuration settings here -->
<configuration>

Para obter mais informações sobre como configurar regras de acesso, consulte Autorização ASP.NET.

Você poderá também criar funções como gerente ou membro e, em seguida, atribuir IDs de usuário às funções.Se seu aplicativo usa autenticação do Windows, você usar a ferramenta Gerenciamento de Computador do Windows para criar usuários e grupos.

Se você estiver usando autenticação por formulários, você pode configurar usuários e funções com a Ferramenta de Administração de Sites Web ASP.NET.Se preferir, você pode executar esta tarefa programaticamente pela chamada a diversos métodos gerenciadores de funções.O exemplo a seguir mostra como criar a função members:

Roles.CreateRole("members")
Roles.CreateRole("members");

O exemplo a seguir mostra como adicionar o usuário JoeWorden individualmente à função manager, e como é possível adicionar os usuários JillShrader e ShaiBassli à função members ao mesmo tempo:

Roles.AddUsersToRole("JoeWorden", "manager")
Dim userGroup(2) As String
userGroup(0) = "JillShrader"
userGroup(1) = "ShaiBassli"
Roles.AddUsersToRole(userGroup, "members")
Roles.AddUsersToRole("JoeWorden", "manager");
string[] userGroup = new string[2];
userGroup[0] = "JillShrader";
userGroup[1] = "ShaiBassli";
Roles.AddUsersToRole(userGroup, "members");
Observação:

Os recursos de gerenciamento de função não estão disponíveis pelo serviço de funções do ASP.NET.O serviço de funções pode trazer informações apenas sobre um determinado usuário.

Trabalhando com funções em tempo de execução

Em tempo de execução, quando os usuários visitam o seu site, eles estabelecem uma identidade, ou pelo nome da conta do Windows ou fazendo login em seu aplicativo.(Em um site da Internet, se os usuários visitam seu site sem fazer login (anônimamente), eles não terão nenhuma identidade de usuário e, portanto, não estarão em nenhuma função.) Informações sobre o usuário conectado estão disponíveis para o seu aplicativo a partir da propriedade User.Quando as funções são ativadas, ASP.NET procura as funções para o usuário atual e as adiciona ao objeto User para que você possa verificá-las.O exemplo a seguir mostra como determinar se o usuário atual está na função de membro.Se o usuário estiver na função, o código exibirá um botão para membros:

If User.IsInRole("members") Then
   buttonMembersArea.Visible = True
End If
if (User.IsInRole("members"))
{
   buttonMembersArea.Visible = True;
}

O ASP.NET também cria uma instância da classe RolePrincipal e a adiciona ao contexto atual da solicitação.Isso permite que você execute as tarefas de gerenciamento de função por meio de programação, tal como determinar quais usuários estarão em uma função específica..O exemplo a seguir mostra como obter uma lista das funções para o usuário logado atualmente.

Dim userRoles() as String = CType(User, RolePrincipal).GetRoles()
string[] userRoles = ((RolePrincipal)User).GetRoles();

Se você estiver usando o controle LoginView do seu aplicativo, o controle vai checar as funções do usuário e terá a capacidade de criar dinamicamente uma interface de usuário com base nessas funções.

Armazenamento em cache das funções

Se o navegador do usuário permitir cookies, o ASP.NET pode opcionalmente armazenar informações das funções em um cookie criptografado no computador do usuário.Em cada solicitação de página, o ASP.NET lê o cookie e preenche as informações de função para esse usuário.Essa estratégia minimiza a necessidade de ler tais informações de função pelo banco de dados.Se o navegador do usuário não tiver suporte para cookies ou se os cookies estiverem desativados, as informações das funções serão, em vez disso, armazenadas em cache apenas para cada solicitação de página.

Consulte também

Conceitos

Provedores de gerenciamento de Função

Classes de gerenciamento de função

Outros recursos

Protegendo sites da Web ASP.NET