Pessoal estou tendo o seguinte problema no meu filtro de permissoes:
17:37:50,810 INFO SecurityFilter:37 - acesso ao resource negado: /pages/home.jsf
17:37:50,826 ERROR [Faces Servlet]:253 - Servlet.service() for servlet Faces Servlet threw exception
java.lang.IllegalStateException: Cannot forward after response has been committed
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:313)
...
at br.com.peopleway.view.filter.SecurityFilter.doFilter(SecurityFilter.java:41)
...
Nao sei bem porque isso ocorre, e o pior é que so ocorre na primeira chamada da rotina ! as proximas requisicoes da acesso negado e nao redireciona para a pagina de acesso negado
Segue abaixo o codigo, desde já muito obrigado.
public class SecurityFilter implements Filter {
...
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
PersonBO personBO = new PersonBO();
HttpServletRequest request = (HttpServletRequest)servletRequest;
HttpServletResponse response = (HttpServletResponse)servletResponse;
Users user = (Users) request.getSession().getAttribute(Users.KEY);
String resource = request.getRequestURI().replaceAll(request.getContextPath(), "");
if(personBO.userHasPermissionForResource(user, resource)){
logger.info("acesso ao resource negado: " + resource);
response.sendRedirect(DynamicMenu.linkDeniedPermission);
}
chain.doFilter(request, response);
}
...
}