Filtro está pegando TODAS as requisições

Olá, estou com um problema de filtros na minha aplicação Web, onde TODAS AS REQUISIÇÕES ESTÃO SENDO FILTRADAS. Mesmo eu explicitando que quero filtrar APENAS: “/faces/restrito”. Alguém pode me mostrar onde estou errando?

Meu web.xml:

    <filter>
        <filter-name>SecurityFilter</filter-name>
        <filter-class>com.empresa.filtros.SecurityFilter</filter-class>
        <init-param>
            <param-name>ID_SISTEMA</param-name>
            <param-value>1</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>SecurityFilter</filter-name>
        <url-pattern>/faces/restrito/*</url-pattern>
    </filter-mapping>

Minha intenção é filtrar as requisições que vierem para o diretório “restrito”, de modo que eu possa verificar se o usuário possui “perfil” de acesso à URL.

Já pesquisei a net inteira, mas todos os exemplos são bem parecidos com o meu. Então acho que deveria funcionar. Será que pode ter algo a ver com o Primefaces que estou usando?

Ele a seguinte configuração:

    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>

Agradeço qualquer ajuda!

“/faces” é o padrão gerado pelo netbeans, a sua pasta restrita não está em /faces/restrito, e sim em /restrito/*


&lt;filter&gt;  
    &lt;filter-name&gt;SecurityFilter&lt;/filter-name&gt;  
    &lt;filter-class&gt;com.empresa.filtros.SecurityFilter&lt;/filter-class&gt;  
    &lt;init-param&gt;  
        &lt;param-name&gt;ID_SISTEMA&lt;/param-name&gt;  
        &lt;param-value&gt;1&lt;/param-value&gt;  
    &lt;/init-param&gt;  
&lt;/filter&gt;  
&lt;filter-mapping&gt;  
    &lt;filter-name&gt;SecurityFilter&lt;/filter-name&gt;  
    &lt;url-pattern&gt;/restrito/*&lt;/url-pattern&gt;  
&lt;/filter-mapping&gt;

É só ver seu mapeamento…kkkk
Vc ta mapeando o diretório virtual do faces…

Obrigado pela resposta. Na verdade, “/faces” é o prefixo usado pelo Primefaces. Não tem a ver com o Netbeans, mas sim com o Primefaces. Em todo caso, isso ainda não explica o pq requisições para o “/” estão sendo redirecionadas para o meu filtro…

/faces não tem nada a ver com primefaces, quando você está utilizando JSF e faz um auto-config de projeto, ele automaticamente, dependendo da IDE, atribui o padrão de URL do servlet JSF como /faces, você pode inclusive trocar o /faces pelo que você quiser, por exemplo “/faces” por “*.algo”. Isso ocorre quando você cria o projeto, e não quando você importa o jar do primefaces.

Posta o seu web.xml inteiro aqui que fica mais fácil analizar

Obrigado pelos esclarecimentos! Realmente eu me confundi… testei a solução que vocês deram de retirar o “/faces” do caminho do filtro, mas agora está fazendo com que o sistema não peça autenticação em momento nenhum.

O filtro não é chamado nunca, pois a URL solicitada é “/faces/restrito/index.xhtml” e o filtro ficou apenas para “/restrito/*”. Se eu voltar o filtro para “/faces/restrito/*” aí volta a pedir autenticação corretamente.

A questão é que para o filtro, a URL é composta pelo “/faces”, independemente se foi o Netbeans ou o Primefaces quem adicionou esse prefixo.

Será que pode ter algo a ver com o Faces Servlet estar executando antes do filtro? Ou algo parecido?

Segue meu web.xml completo conforme vcs pediram:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Production</param-value>
    </context-param>
    <filter>
        <filter-name>SecurityFilter</filter-name>
        <filter-class>com.empresa.filtros.SecurityFilter</filter-class>
        <init-param>
            <param-name>ID_SISTEMA</param-name>
            <param-value>1</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>SecurityFilter</filter-name>
        <url-pattern>/faces/restrito/*</url-pattern>
    </filter-mapping>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>faces/restrito/index.xhtml</welcome-file>
    </welcome-file-list>
</web-app>