Galera é o seguinte preciso fazer uma aplicação com controle de permissões. Tenho [n] categorias (itens do menu, ex. cadastro de usuários) cada categoria possui quatro tipos de permissões que são: ler, alterar, incluir e excluir.
Eu fiz assim. Criei uma tabela no Banco de Dados onde gravo o id da categoria, o id do usuário e as permissões ai quando me logo no sistema pego as permissões gravo na session uma HashMap com o id da categoria e as permissões do usuário. E quando vou montar as telas recupero as permissões da categoria e monto.
Gostaria de saber como vocês fariam?
Ou utilizando um BD, como você.
Mas ultimamente tenho utilizado LDAP para autenticação e controle de permissões.
Meu projeto final de faculdade foi um controlador de acesso usando RBAC e LDAP. Depois de 4 anos em uso e vários refactories, ele já é uma ferramenta de venda da minha empresa. Mas sem jabá aqui…
Eu prefiro usar um controle LDAP à controles em banco… procure por JAAS tb… pode ser util!
Esse JAAS parece ser bem legal. Mais ele me controla só a url. Meu problema é que tenho uma pagina com a lista dos usuários e com os botões ver, alterar, incluir e excluir. E dependendo das permissões gostaria de mostrar só o botão de ver ou só os botões de ver e alterar e assim por diante, ai acho que o JAAS não supre minhas expectativas.
Grato,
Rodolfo
Boas idéais são sempre bem vindas.
Eu andei tendo umas discussões mais acaloradas aqui com os analistas devido a esse fato de ‘controlar botão da tela’.
Mas de qualquer forma, sugiro que dê uma olhada no OpenLDAP(Active Directory não, pelamordedeus, já chega eu apanhando desse estrupício) e na API do Java pra trabalhar com LDAP.
Andei dando uma olhada no JAAS, JGuard e LoginModule do Jboss. Mas nada disso atendia as minhas necessidades e acabei desenvolvendo uma app in-house.
Neste caso, a ferramenta que eu citei ai na thread funciona assim:
Vc tem uma tag que verifica se vc tem acesso a tal objeto/submit/action/etc… se vc tiver, ele coloca o código inteno, senão, ela suprime esse codigo…
Alem disso, ela tem um preProcessor e um postProcessor, que checa se o usuário tem acesso as urls…