DBAuthorization – Parte 10 – Conclusão


Finalmente chegamos na conclusão desta série. A partir deste momento você tem todas as políticas de acesso as páginas dentro do banco de dados, com uma arquitetura flexível e que pode ser estendida para ser suportada por outros repositórios.

Uma vez que o provider foi criado, sempre que nós precisamos das informações, seja para aplicar a autorização durante a execução ou pelas telas de gerenciamento das informações, sempre utilizamos o provider para isso (classe DBAuthorization), o que torna a aplicação e a API totalmente independente de qual fonte de dados estamos utilizando para armazenar essas informações.

É importante dizer também que, assim como a UrlAuthorization, a DBAuthorization avalia as permissões de forma sequencial, ou seja, a ordem em que elas aparecerem cadastradas no banco de dados será a ordem de avaliação durante a execução. Neste momento não temos nenhuma forma de reordenação dos registros, mas isso pode ser facilmente implementado. Um boa prática aqui é sempre você ir cadastrando em uma ordem coerente, ou seja, negue o acesso anônimo para um diretório como um todo mas, dentro dele, customize o acesso à algumas seções de acordo com os papéis.

Outra semelhança que o DBAuthorizationModule possui em relação ao UrlAuthorizationModule é que faz uso da propriedade User da classe HttpContext. Essa propriedade retorna a instância de uma classe que implementa a interface IPrincipal e, independentemente do tipo de autenticação que está utilizando (Forms (GenericPrincipal) ou Windows (WindowsPrincipal)), ele sempre irá trabalhar de forma genérica. Utilizará a propriedade IIdentity para determinar o nome do usuário e o método IsInRole para avaliar se o usuário faz ou não parte de um determinado papel/grupo.

Para efeitos de centralização e reusabilidade da API, você pode instalar essa DLL dentro do GAC (Global Assembly Cache) e registrar a seção “dbAuthorization” no arquivo machine.config. Esta técnica evitará com que todas as aplicações que desejam fazer uso deste recurso, não precisem explicitamente fazer o registro.

Para finalizar, todo esse projeto não foi implementando em um ambiente real. Os testes foram locais e, se desejar colocá-lo em um ambiente de produção, chamo a atenção para que você refaça os testes, analisando todas as possibilidades necessárias para garantir o bom funcionamento dele.

Quero também agradecer imensamente ao Luis Abreu, expert em tecnologias Microsoft, que revisou e me deu dicas extremamente importantes para ajudar na elaboração desta série. O código para download está no seguinte endereço: http://www.israelaece.com/BlogEngine.Web/file.axd?file=2009%2f4%2fDBAuthorization.zip.

Anúncios

5 comentários sobre “DBAuthorization – Parte 10 – Conclusão

  1. Israel

    Não entendi essa linha de codigo do arquivo global.asax

    void Application_Start(object sender, EventArgs e)
    {
    DBAuthorization.Provider.DataChanged += (source, args) => args.ClearCache = true;
    }

    Qual seria o codigo em vb.net??

    Att

    Eduardo Miano

    • Boas Rafael,

      Acho que não entendi a sua dúvida. Esse parâmetro é utilizado para duas finalidades: 1) para recuperar as regras que temos definidas e 2) para verificar se o usuário corrente tem ou não direitos para acessá-lo.

    • Bom dia Israel, poderia tirar uma dúvida, estou querendo integrar essa implementação DBAuthorization com o sitemap para fazer meu Menu dinamico de acordo com as permissões definidas no DBAuthorization. É possível? voce pode me dar um luz. Muito Obrigado e Parabéns!

    • Boas Eduardo,

      Para VB.NET, você pode fazer:

      AddHandler DBAuthorization.Provider.DataChanged, AddressOf ClearCache

      Depois crie o método ClearCache:

      Private Sub ClearCache(sender As Object, args As CachingRulesEventArgs)
      args.ClearCache = True
      End Sub

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s