1
resposta

Dúvida ao mapear o WebFilter

Boa noite gostaria de ajuda para mapear o WebFilter por meio da (barra) "/".

Meu filtro está da seguinte forma:

@WebFilter("/")
public class AutorizacaoFilter implements Filter {    

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {

        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;

        String url = request.getRequestURI();
        System.out.println("url: " + url);

        //redirecionando para o Index
        if (url.equals("/gerenciador/")) {
            response.sendRedirect("Index");
            return;
        }

        HttpSession sessao = request.getSession();
        boolean usuarioNaoLogado = (sessao.getAttribute("usuarioLogado") == null);
        boolean acaoProtegida = !(url.equals("/gerenciador/Login") || url.equals("/gerenciador/LoginForm") || url.equals("/gerenciador/Index"));
        System.out.println(usuarioNaoLogado + " - " + acaoProtegida); 
        if (usuarioNaoLogado && acaoProtegida) {
            response.sendRedirect("LoginForm");
            return;
        }

        chain.doFilter(request, response);
    }
}

Porém aparentemente ao mapear o Filtro com a barra, a execução do mesmo apenas acontece quando chamo a página índice que está na própria raiz, ou seja, em: http://localhost:8080/gerenciador/, todas as demais páginas como: http://localhost:8080/gerenciador/ListaEmpresas, http://localhost:8080/gerenciador/NovaEmpresaForm... Não passam pelo filtro ao serem executadas.

1 resposta

Oie José, tudo bem contigo?

Perdão pela demora!

A opção que vejo para isso é você continuar usando o parâmetro "acao", já que para fazer de outro jeito você teria que fazer alterações maiores no seu código.

Seguindo minha sugestão, você faria desse jeito:

 http://localhost:8080/gerenciador/?acao=ListaEmpresas

A "/" (barra) ainda seria o mapeamento e você só teria que continuar usando o parâmetro "acao" para executar as ações desejadas.

Espero ter ajudado!

Se tiver qualquer outra dúvida estarei por aqui :)