LoginFilter problema ao acessar url diretamente

0 respostas
gaulix

Estou tentando fazer um filtro de login em uma aplicação web em jsf, mas estou com um probleminha:

Tenho um LoginFilter, que implementa a classe Filter:

public class LoginFilter implements Filter {

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		LoginController loginController = (LoginController) ((HttpServletRequest) request).getSession().getAttribute("loginController");
		if (loginController == null || !loginController.isLogged()) {
			String contextPath = ((HttpServletRequest) request).getContextPath();
			((HttpServletResponse) response).sendRedirect(contextPath + "/login.jsf");
		}
		chain.doFilter(request, response);

	}

	public void init(FilterConfig config) throws ServletException {
	}

	public void destroy() {
	}

Isso faz com que quando o usuário tente acessar um página pela url sem estar logado ele seja redirecionado para a tela de login, até ai tudo certo.
O problema é que antes de redirecionar, o controller (o método com PostConstruct) da tela que estou tentando acessar é executado, e isso está errado, pois não tenho nenhum usuário na sessão ainda, alguém sabe como interromper que o controller seja chamado?

Criado 25 de janeiro de 2014
Respostas 0
Participantes 1