Olá amigo, estou prestes a desenvolver um controle de permissões para uma aplicação utilizando Spring, Hibernate, JSF e Primefaces.
Tenho uma ideia de fazer a tabela das permissoes e usuarios, onde essas permissões seriam os booleanos que controlariam os “rendereds” das páginas.
Mas acho que isso vai ficar muito pesado para ficar em sessão, e as páginas ficarem dando buscas e buscas para saber se mostram ou não o item de menu ou botão por exemplo.
Alguem conhece uma forma melhor para eu implementar e controlar o que usuário pode ou não ver?
Neste seu caso, quando vc diz que em um usuariologado que verifica, no caso vc faz pra cada requisição uma consulta no banco, ou quando vc se loga vc ja carrega todas as permissões numa lista e verifica nela?
Meu menu era montado dinamicamente, com o tree, mas o cliente quer que cada botão, e ação do sistema esteja mapeada hehe, ai achei melhor fazer um só hehe
Tipo, imagina que em uma tela de faturamento, tens várias opções, não estamos falando do menu, e sim de botões e links que permitem fazer ações no sistema, onde algumas dessas açõessó seram permitidas a quem tiver esse tipo de permissão.
Então no caso a cada “get” faço uma consulta no banco? pq o que eu iria fazer é que a cada “get” ele fosse no mapa e viss se o cara tem ou n aquela permissão.
darksteel3000 você pode criar uma classe que faça isso pra você e usar ela como um pai, mais ou menos assim:
public class PadraoBean {
private boolean novoDesabilitado;
private boolean editarDesabilitado;
private boolean excluirDesabilitado;
public PadraoBean(String tela) {
// lerAutorizacao
novoDesabilitado = parametroNovo;
editarDesabilitado = parametroEditar;
excluirDesabilitado = parametroExcluir;
}
// get e set
}
public class ClienteBean extends PadraoBean{
public ClienteBean() {
super("cliente");
}
}
<p:commandButton disabled="#{clientBean.novoDesabilitado}"/>
É só pra você ter uma ideia, em vez de você escrever o código toda vez você irá ver no banco, mas o código só vai ta escrito no PadraoBean, aí você passa os parâmetros necessários pelo clienteBean.