Exportar (0) Imprimir
Expandir Tudo

Implementar um provedor de função

Gerenciamento de funções ASP.NET permite que você facilmente usar um número de diferentes provedores para seus aplicativos ASP.NET.Você pode usar os provedores de perfil fornecidos com o .NET Framework, ou você pode implementar seu próprio provedor.

Existem dois principais motivos para criar um provedor de função personalizado.

  • Você precisará armazenar as informações da função em uma fonte de dados que não é suportada pelos provedores de função incluídos no .NET Framework, como um banco de dados FoxPro, um banco de dados Oracle, ou outra fonte de dados.

  • Você precisará gerenciar informações da função usando um esquema de banco de dados que seja diferente do esquema do banco de dados usado pelos provedores fornecidos com o .NET Framework.Um exemplo comum deste seria os dados de autorização que já existem em um banco de dados SQL Server para uma empresa ou site.

Para implementar um provedor de função, crie uma classe que herda da classe abstrata RoleProvider do namespace System.Web.Security.A classe abstrata RoleProvider herda a classe abstrata ProviderBase do namespace System.Configuration.Provider.Como resultado, você deve implementar os membros necessários da classe ProviderBase assim.A seguinte lista Tabelas o exigido propriedades e métodos que você deve implementar do ProviderBase e RoleProvider abstrato classes e uma descrição de cada.Para revisar uma implementação de cada membro, consulte o Código fornecido para o Implementando o exemplo do provedor de função.

Membros ProviderBase

MEMBER

Descrição

Método Initialize

Takes as input the name of the provider and a NameValueCollection of configuration settings.Utilizado para definir os valores das propriedade para a instância do provedor incluindo valores específicos da implementação e opções especificadas no arquivo de configuração (Machine.config ou Web.config).

Membros do RoleProvider

MEMBER

Descrição

Propriedade ApplicationName

O nome do aplicativo usa as informações da função especificada no arquivo de configuração (Web.config).O ApplicationName é armazenado na fonte de dados com informações do usuário relacionados e usadas quando ocorrem consultas a informações do usuário.Consulte a seção sobre o ApplicationName neste tópico para obter mais informações.

Esta propriedade é leitura/gravação e o padrões é a ApplicationPath se não for especificada explicitamente.

Método AddUsersToRoles

Takes as input a list of user names and a list of role names, and associates the specified users with the specified roles at the data source for the configured ApplicationName.

You should throw a ProviderException if any of the role names or user names specified do not exist for the configured ApplicationName.

Você deve acionar uma ArgumentException se qualquer um dos nomes de usuário ou nomes de funções especificados for uma seqüência de caracteres vazia e uma ArgumentNullException se qualquer um dos nomes de usuário ou nomes de função especificados for null (Nothing no Visual Basic).

Se sua fonte de dados oferece suporte a transações, você deve incluir a operação de adição numa transação, e reverter a transação e enviar uma exceção se qualquer operação de adição falhar.

Método CreateRole

Leva como entrada o nome de uma função e adiciona a função especificada para a fonte de dados para a ApplicationName configurada.

Você deve acionar uma ProviderException se o nome de função especificado já existir para o ApplicationName configurado.

Você deve acionar uma ArgumentException se o nome de função especificado for uma seqüência de caracteres vazia, contém uma vírgula ou excede o comprimento máximo permitido pela fonte de dados e uma ArgumentNullException se o nome de função especificado for null (Nothing no Visual Basic).

Método DeleteRole

Obtém como entrada o nome de uma função e um valor booleano que indica se envia uma exceção se ainda houver usuários associados à função.A DeleteRole exclui a função especificada da fonte de dados para a ApplicationName configurada.

Se o parâmetro throwOnPopulatedRole é true, e a função identificada pelo parâmetro de nome de função tem um ou mais membros, acione um ProviderException e não exclua a função.Se o parâmetro throwOnPopulatedRole for false, então exclua a função se ela estiver vazia ou não.

Quando você exclui uma função da fonte de dados, certifique-se que você exclua também quaisquer associações entre um nome de usuário e a função excluída para o ApplicationName configurado.

Você deve acionar uma ArgumentException se o nome de função especificado não existe, ou é uma seqüência vazia.Você deve acionar uma ArgumentNullException se o nome de função especificado for null (Nothing no Visual Basic).

Método FindUsersInRole

Leva como entrada um nome de função e um nome de usuário para procurar e retorna uma lista de usuários em uma função onde o nome de usuário contém uma correspondência de usernameToMatch fornecido para o ApplicationName configurado.Por exemplo, se o parâmetroemailToMatch for definido como " Address@example.com ", os usuários com o endereço de email " address1@example.com, " " address2@example.com ", e assim por diante são retornados.O suporte ao caractere curinga é incluído com base na fonte de dados.

Usuários são retornados em ordem alfabética por nome.

É recomendável que você acione uma ProviderException se o nome de função especificado não existir na fonte de dados.

Método GetAllRoles

Retorna uma lista de nomes da função da fonte de dados.Somente as funções para o ApplicationName especificado são recuperadas.

Se nenhuma função existir para o ApplicationName configurado, você deve retornar um matriz de seqüências de caracteres com nenhum elemento.

Método GetRolesForUser

Obtém como entrada um nome de usuário e retorna os nomes das funções que o usuário especificado está associado, a partir da fonte de dados.Somente as funções para o ApplicationName configurado são recuperadas.

Se nenhuma função existir para o ApplicationName configurado, você deve retornar um matriz de seqüências de caracteres com nenhum elemento.

Você deve acionar uma ArgumentException se o nome de usuário especificado for uma seqüência de caracteres vazia.Você deve acionar uma ArgumentNullException se o nome de função especificado for null (Nothing no Visual Basic).

Método GetUsersInRole

Obtém como entrada um nome de função e retorna os nomes de usuário associados a uma função da fonte de dados.Somente as funções para o ApplicationName configurado são recuperadas.

Se o nome de função especificado não existe para a ApplicationName configurada, você deve lançar uma ProviderException.

Se nenhum usuário estiver associado com a função especificada para o ApplicationName configurado, você deve retornar um matriz de seqüências de caracteres com nenhum elemento.

Você deve exibir uma ArgumentException se o nome da função especificada for uma seqüência vazia, contiver uma vírgula ou exceder o comprimento máximo permitido para um nome da função pela sua fonte de dados.Você deve acionar uma ArgumentNullException se o nome de função especificado for null (Nothing no Visual Basic).

Método IsUserInRole

Utiliza como entrada um nome de usuário e um nome de função e determina se o usuário com logon feito atual está associado com uma função a partir de fonte de dados para a ApplicationName configurado.

Você deve lançar uma ProviderException se o nome de função ou o nome de usuário especificado não existir para o ApplicationName configurado.

Você deve acionar uma ArgumentException se o nome de usuário ou nome da função especificado é uma seqüência de caracteres vazia e uma ArgumentNullException se o nome de usuário ou nome de função especificado for null (Nothing no Visual Basic).

Método RemoveUsersFromRoles

Utiliza como entrada uma lista de nomes de usuário e uma lista de função nomes e remove as funções especificadas no fonte de dados para a ApplicationName configurado a associação para os usuários especificados.

Você deve lançar uma ProviderException se quaisque dos nomes de função ou dos nomes de usuário especificados não existirem para o ApplicationName configurado.

Você deve acionar uma ArgumentException se qualquer um dos nomes de usuário ou nomes de funções especificados for uma seqüência de caracteres vazia e uma ArgumentNullException se qualquer um dos nomes de usuário ou nomes de função especificados for null (Nothing no Visual Basic).

Se sua fonte de dados oferece suporte a transações, você deve incluir um operação de remoção em cada transação, e reverter a transação e exibir uma exceção se qualquer operação de remoção falhar.

Método RoleExists

Leva como entrada um função Nome e determina se o nome da função existe no fonte de dados para a ApplicationName configurado.

Você deve acionar uma ArgumentException se o nome de função especificado não existe, ou é uma seqüência vazia.É recomendável que você acione uma ArgumentNullException se o nome de função especificado for null (Nothing no Visual Basic).

Os provedores de função armazenam informações exclusivamente para cada aplicativo.Isso permite que vários aplicativos ASP.NET usem a mesma fonte de dados sem executar em conflito, se forem usados nomes duplicados.Como alternativa, vários aplicativos ASP.NET podem usar a mesma fonte de dados de funções, especificando o mesmo ApplicationName.

Como provedores de função armazenam informações exclusivamente da função para cada aplicativo, será necessário para garantir que o esquema de dados inclua o nome do aplicativo e que as consultas e atualizações também incluam o nome do aplicativo.Por exemplo, o comando a seguir é usado para recuperar um nome de função de um banco de dados e garante que o ApplicationName está incluído na consulta.

SELECT Rolename FROM Roles 
  WHERE Rolename = 'Administrators' AND ApplicationName = 'MyApplication'

Para cada provedor de função especificado na configuração de um aplicativo, o ASP.NET instancia uma única instância do provedor de associação que é usada para todas as solicitações servidas por um objeto HttpApplication. Como resultado, você pode ter várias solicitações em execução ao mesmo tempo. O ASP.NET não garante a segurança do segmento de chamadas para o seu provedor. Você vai precisar escrever seu código de provedor para ser thread safe. De exemplo, criar uma conexão a um banco de dados ou abrir um arquivo para edição deve ser feito dentro de membro que é chamado, such as AddUsersToRoles rather than, abrindo um arquivo ou Conexão do Banco de Dados quando o método Initialize é chamado.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2015 Microsoft