Otimizando a validação de permissões - Búfalo Informática
Dica No : 780
Titulo: Otimizando a validação de permissões
No ASP.NET podemos facilmente verificar pelo código se o usuário encontra-se em um determinado grupo e desta forma determinar o que o usuário pode visualizar, através da instrução context.user.isinrole("nomedogrupo")
Se desejamos verificar apenas um grupo, isso não é problema. Mas se desejamos verificar vários grupos, executar context.user.isInRole várias vezes seguidas se torna um problema.
Quando desejariamos verificar vários grupos ?
Quando a tela tem grande complexidade e o acesso aos objetos de tela depende do usuário estar em diferentes grupos.
Por que isso é um problema ?
Porque cada vez que chamamos o isInRole o provider de grupos é disparado e recupera os grupos do usuário. Essa recuperação tem um certo peso, dependendo do provider pode significar acesso a banco.
Ao inves de utilizarmos o isInRole, podemos utilizar a classe Roles, que fica em System.Web.Security. Assim podemos utilizar Roles.GetRolesForUser() para obter os grupos do usuário, estaremos fazendo esta obtenção uma única vez.
Este método nos devolve um array de strings, podemos fazer laços para trabalhar com ele ou até mesmo converte-lo em um arraylist (com o método addRange do ArrayList) e utilizar o indexOf para pesquisar o ArrayList.