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 APIApplication 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.