olá pessoal,
Neste post vou abordar algo que pode ser bem interessante para quem está usando o SpringSecurity como framework de segurança em suas aplicações JEE. Se você usa o JSF, há possibilidade de fazer a validação do role que temos no Spring dentro do form. Eu já apresentei em outros posts a solução para role a nível de banco de dados, veremos aqui uma opção que não depende de função específica do banco.
Lets go…
Iniciando
Vimos neste post, a solução do ROLE quando temos que usar em um banco de dados. Porém, depois de uma experiência em um projeto JEE que tinha JSF + BD + SpringSecurity eu fiquei pensando como implementar a solução para o ROLE sem ficar dependendo do banco, já que a função de concatenar é dependente do fabricante. E uma vez que o banco mudar eu teria que lembrar de atualizar o code com o método que faz a concatenação daquele banco em específico. Não achei nada legal, daí por acaso conheci o uso do rendered no JSF, onde nesse post apresentei o uso do atributo. Resolvi fazer o teste para o ROLE do Spring e deu “bingo”. A seguir veremos parte de um código que faz o teste.
Desenvolvimento
Para entender o código a seguir vamos imaginar um programador que não sabia como tirar o ROLE do Spring antes de ir para o banco. E acabou tendo que gravar as informações na coluna Cargo ROLE_Administrador (mas, ele queria apenas Administrador). Porém, ao exibir os dados ao usuário final em uma tabela não está nada legal termos ROLE_Administrador e o role não faz maior sentindo para o usuário final, e a primeira solicitação do cliente será removê-lo.
No banco
O que queremos é exibir esses dados na tabela sem o role, para isso na sua pagina que exibi os usuarios, teremos que comparar os dados que vem do BD e alterar somente para o view no JSF.
<td jsfc=”h:column”>
<f:facet name=”header”>
<h:outputText value=”Cargo”/>
</f:facet>
<h:outputText rendered=”#{us.cargo==’ROLE_Administrador’}” value=”Administrador”/>
<h:outputText rendered=“#{us.cargo==’ROLE_Usuario’}” value=”Usuario”/>
</td>
Basicamente é isso que você precisa, pelo menos agora não precisa se preocupar mais em alterar funções no BD.
Vou ficando por aqui, espero que tenham gostado, esse post foi bem curto, mas causa grande impacto quando estamos usando JSF + SpringSecurity.
Abracos, see ya!!