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:
[code]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() {
}
[/code]
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?