Duvida sobre filter para acessar paginas com usuario logado

2 respostas
java
Dayson_Rodrigues

estou com muita duvida, de como usar um filter para poder acessar pagina com usuario logado.

Ao tentar entrar, ele não loga!
OBS: meu codigo estáva funcionando normalmente, como estou usando o FIlter, ele não passa da tela de login…

Segue meu codigo.

meu Filter
package br.com.triadworks.todoList.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import br.com.triadworks.todoList.model.Usuario;

@WebFilter(urlPatterns = { "/mvc" })
public class FilterAutenticacao implements Filter {

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

		HttpServletRequest req = (HttpServletRequest) request;
		HttpSession session = req.getSession();

		Usuario usuarioLogado = (Usuario) session.getAttribute("usuarioAutenticado");

		if (usuarioLogado == null) {
			encaminhaPagina(request, response);
			return;
		}
		chain.doFilter(request, response);
		System.out.println("Interceptando...");
	}

	private void encaminhaPagina(ServletRequest request, ServletResponse response)	throws ServletException, IOException {
		request.getRequestDispatcher("WEB-INF/jsp/view/login.jsp").forward(request, response);
	}
}

Tela de Login

package br.com.triadworks.todoList.logica;

import java.sql.Connection;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;
import br.com.triadworks.todoList.dao.UsuarioDAO;

import br.com.triadworks.todoList.infra.ConnectionFactory;

import br.com.triadworks.todoList.model.Usuario;

public class LoginTarefaLogic implements Logica {

@Override
public String executa(HttpServletRequest request, HttpServletResponse response) throws Exception {
	Connection connection = ConnectionFactory.getConnection();

	String login = request.getParameter("usuario");
	String senha = request.getParameter("senha");

	Usuario usuario = new Usuario(login, senha);
	Usuario usuarioAutenticado = new UsuarioDAO(connection).autenticar(usuario);

	if (usuarioAutenticado != null) {
		pegaSessao(request,usuarioAutenticado);
		return "mvc?logica=ListarTarefaLogic";
	} else {
		return "erroLogin.jsp";
	}
}

private void pegaSessao(HttpServletRequest request, Usuario usuarioAutenticado) {
	
	HttpSession session = request.getSession();
	session.setAttribute("usuarioAutenticado", usuarioAutenticado);
	session.setMaxInactiveInterval(3000);
}

}

2 Respostas

edumatias

Opa,

Quando você debuga, nesta linha o usuário não está nulo, certo?

Usuario usuarioLogado = (Usuario) session.getAttribute("usuarioAutenticado");

Os filtros estão declarados no web.xml?

Partindo desse princípio, tente alterar este método:

encaminhaPagina(request, response);

para

encaminhaPagina(request, response, chain);

E este

private void encaminhaPagina(ServletRequest request, ServletResponse response)	throws ServletException, IOException {
	request.getRequestDispatcher("WEB-INF/jsp/view/login.jsp").forward(request, response);
}

Para

private void encaminhaPagina(ServletRequest request, ServletResponse response, FilterChain chain)	throws ServletException, IOException {
	  chain.doFilter(request, response);
}
Dayson_Rodrigues

ok! vou ver aqui, usei @WebFilter para não configurar no web.xml

Criado 19 de outubro de 2017
Ultima resposta 19 de out. de 2017
Respostas 2
Participantes 2