Controle de acesso e permissão - JSF

8 respostas
java
P

Bom dia galera!

Seguinte, to com um projetinho de CRUD pra gerenciar docentes e cursos de uma facul usando jsf+primefaces+jpa. Meu problema é o seguinte:

Existem os usuarios que são os cordenadores dos cursos e os usuarios que são funcionarios. Os funcionarios tem acesso a lista de todos os cursos cadastrados na base, porém os cordenadores só podem visualizar os dados do curso dele.

Exemplo: Usuario normal abre a tela do crud e ve um datatable mostrando todos os cursos. Já um cordenador ve um datatable mostrando apenas o curso atribuido a ele.
Como eu faço pra restringir esse tipo de acesso a um usuario?

8 Respostas

A

Se você utiliza um servidor de aplicações Java EE full recomendo usar o JAAS, caso utilize um servlet container use o Spring Security

P

Utilizo Apache Tomcat aix!

A

Apache Tomcat é um servlet container :wink:

P

Você teria um exemplo pratico usando os recursos iguais aos meus?

M

nao sei se entendi muito bem, mas suponho que os usuarios coordenadores e os usuarios funcionario tenham um login e senha, sendo assim, vc poderia criar um campo no banco de dados com um nome
’permissao’ e os valores poderiam ser numeros, ex: permissao = 1, permissao = 2, sendo assim, quando qualquer usuario logar,a depender do numero de permissao que ele foi cadastrado, vc decide oq ele podera vizualizar, espero ter ajudado

L

< p:dataTable id="dataTableUsuarioNormal rendered="#{meuManagedBean.isUsuarioNormal}" />

< p:dataTable id=“dataTableCoordenador` rendered=”#{ ! meuManagedBean.isUsuarioNormal}" />

no managed bean

private boolean usuarioNormal;

// gere os getters e setters

public boolean isUsuarioNormal(  ){

Pessoa p =(Pessoa)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(usuarioLogado);

return (p instance of Usuario);

}

Obs.:

Nesse exemplo defino Pessoa como classe “pai” e Usuario e Coordenador como classes filhas;

Ao fazer o login vc deverá colocar o usuário na sessão, pois o mesmo deverá ser recuperado e identificado, com isso vc poderá renderizar os componentes da página de acordo com o perfil

FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(“usuarioLogado”, pessoa);

E

Sugiro fazer como o @aix falou usando Spring Security. Ai sim você vai ter garantir isso. Tem varios tutoriais por ai, só pesquisar por JSF + Spring Security.

C

Utilize o Apache Shiro se você está usando um Servlet container.

O lance é você usar um DataSource pq o apache shiro não será gerenciado pelo container do JSF ou do CDI.

Criado 30 de março de 2016
Ultima resposta 1 de abr. de 2016
Respostas 8
Participantes 6