Olá pessoal, no tutorial de hoje iremos aprender a trabalhar com filter de autenticação de usuário, isto é, implementaremos o processo de autenticação de acesso a uma página. Em resumo significa que o usuário só poderá acessar uma dada página de um sistema se estiver autenticado. E se não estiver, o sistema irá redirecioná-lo para a tela de login.
API – SERVLET-API
E como utilizaremos nesta implementação um filter de servlet, precisaremos então de uma API – Application Programming Interface. Desse modo, caso seu projeto não tenha criado automaticamente a pasta lib, você deverá criá-la dentro da pasta WEB-INF. Faça aqui o download da API servlet-api.jar e cole dentro da pasta lib. Esta pode ser facilmente encontrada em repositórios online.
Já com a API dentro da pasta clique com o botão direito do mouse sobre a servlet-api.jar >> Build Path >> Add Build Path, adicionando assim a classe path da aplicação.
IMPLEMENTANDO A CLASSE FILTER
Agora na pasta src (source) criaremos uma filter, para isso crie uma classe Java com o nome FilterAtenticacao. Na classe, o primeiro passo será a importação do pacote javax.servlet.Filter.
A classe FilterAutenticacao implementa a classe Filter. Clicando no ícone da lâmpada que aparece a esdquerda chamando nossa atenção para algum problema na implementação, clique em Add unimplemented methods, para a importação dos métodos destroy, responsável por alguma ação a partir do encerramento do Filter. E o init que também é responsável pela execução de alguma ação, mas neste caso sempre que a aplicação é iniciada.
E por fim o doFilter que é o responsável pela interceptação das requisições, assim sendo, altere os nomes das variáveis arg0, arg1 e arg2 para request, response e chain respectivamente. Como o doFilter é chamado em toda a requisição além de ser uma boa prática adotar nomes para as variáveis que nos oriente dentro da aplicação, é também o mais lógico a se fazer.
Assim, o request e o response sempre serão invocados pelo chain, porém sendo passados como argumento do doFilter. Uma vez que o chain é o responsável por fazer a execução do request e do response. Atente-se aem a linha de código abaixo a aplicação não é mostrada.
chain.doFilter(request, response);
Ainda na classe FilterAutenticacao logo após os imports, implementaremos a anotação @webFilter cujo mapeamento nos dispensa de fazê-lo no arquivo web.xml. Neste primeiro momento permitiremos que o mapeamento intercepte todas as urls, entretanto, posteriormente, indicaremos uma página específica.
@webFilter(urlPatterns={“/*”})
PÁGINA JSP
Na página index.jsp criaremos um botão que deverá acessar uma página específica, porém, o acesso somente será permitido a partir da autenticação do usuário. Inicialmente, implementaremos apenas um link. Dessa forma, insira mais uma linha na tabela.
<td><a href =”pages/acessoAoSiatema.jsp”> Acessar Sistema</a></td>
EM POUCAS PALAVRAS
Se você implementar um System.out.println(“Interceptado”), no doFilter já poderá ver o filtro funcionando. Agora daremos sequência com a implementação da autenticação liberando somente a partir dela o acesso a página que iremos criar. Eu fico por aqui e nos vemos na parte dois deste tutorial.