4
respostas

Duvida aplicar um filter no meu projeto.

Tenho varias paginas JSP, que ao tentar entrar em varias paginas ele verifica se o usuario está logado, como faço para usar um filter para resolver isso?

Segue exemplo:


public class AdicionaTarefa implements Logica {

    @Override
    public String executa(HttpServletRequest request, HttpServletResponse response) throws Exception {

        if (request.getSession().getAttribute("usuarioLogado") != null) {
            request.setAttribute("situacoes", Arrays.asList(Situacao.values()));
            return "WEB-INF/jsp/view/adiciona.jsp";
        }
        return "mvc?logica=TelaLogin";
    }

}
4 respostas

Boa noite Dayson, tenta criar um classe que implemente Filter e mapeia com @WebFilter para as requisições que quiser receber e dentro de doFilter() faz a validação, pois ele recebe um ServletRequest, então dá pra pegar a session

Obrigado pela ajuda!

Ao tentar se logar, quando clico em entrar ele atualiza a pagina, é alguma coisa que devo está esquecendo.

Eu consegui fazer até aqui.

@WebFilter("/mvc")
public class AutenticacaoFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {

        HttpServletRequest httpServletRequest = (HttpServletRequest) request;
        HttpServletResponse servletResponse = (HttpServletResponse) response;
        Usuario usuario = (Usuario) httpServletRequest.getSession().getAttribute("usuarioLogado");

        if(usuario == null){
                request.getRequestDispatcher("/login.jsp").forward(httpServletRequest, servletResponse);
            return;
        }
        chain.doFilter(httpServletRequest, servletResponse);
    }
}

Meu codigo está assim.

Quando estou tentando logar, a pagina fica atualizando.

@WebServlet("/mvc")
public class ServletController extends HttpServlet{

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String parametro = request.getParameter("logica");
        String nomeDaClasse = "br.com.triadworks.todoList.logica." + parametro;

        try {
            Class classe = Class.forName(nomeDaClasse);
            Logica logica = (Logica) classe.newInstance();
            String pagina = logica.executa(request, response);
            request.getRequestDispatcher(pagina).forward(request, response);
        } catch (Exception e) {
            throw new ServletException("A lógica causou uma exceção!", e);
        }
    }
}

Meu Filter

@WebFilter("/mvc")
public class AutenticacaoFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {

        HttpServletRequest httpServletRequest = (HttpServletRequest) request;

        Usuario usuario = (Usuario) httpServletRequest.getSession().getAttribute("usuarioLogado");

        String requestURI = httpServletRequest.getRequestURI();

        System.out.println("URI: "+requestURI);

        if(usuario == null){
            request.getRequestDispatcher("login.jsp").forward(request, response);
            return;
        }
        chain.doFilter(request, response);
    }
}

alguém poderia me ajudar? até agora sem sucesso!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software