Como fazer página aparecer o css sendo que ela precise do filter?

Eai pessoas

Eu estava com um problema de filter e consegui resolver aqui com o fórum. Mas agora tenho uma dúvida sobre o CSS da página.

Todas as minhas páginas contém CSS, inclusive a de login. Segue imagem mostrando como está a separação

A página de login está ok aparecendo o css, mas as outras que estão dentro do filter não aparecem… com ctza nao vai aparecer mesmo pq o filter bloqueia

Então vem a dúvida… como faz sendo que preciso que o diretório pages tenha filter, mas apareça o css?

web.xml

<filter>
        <filter-name>AuthFilter</filter-name>
        <filter-class>com.changes.util.AuthFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>AuthFilter</filter-name>
        <url-pattern>/pages/*</url-pattern>
    </filter-mapping>

<welcome-file-list>
        <welcome-file>/login.jsf</welcome-file>
    </welcome-file-list>

Valeu

Pq dentro do seu filtro você não faz um IF?

Se o destinho final da chamada for um css, você libera mesmo sem login. [=

Oi, Hebert

Não entendi… liberar a página sem login?

Meu filter

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest rq = (HttpServletRequest) request;
        HttpServletResponse rp = (HttpServletResponse) response;
        boolean auth = rq.getSession().getAttribute("user") != null;

        if (!auth && !rq.getRequestURL().toString().contains("login.jsf")) {
            rp.sendRedirect(rq.getContextPath() + "/login.jsf");
        } else {

            try {
                chain.doFilter(request, response);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

Cara, é só fazer um if. Se a URL chamada for seu CSS aí você libera.

Aqui tem um exemplo: Aplicação Web Completa Tomcat JSF Primefaces JPA Hibernate.

Hm… poderia me explicar como é a referência do allowedURIs?

JSFCrudApp - nome do projeto
javax.faces.resource - ?
etc

valeu

public void init(FilterConfig fConfig) throws ServletException {
		if(allowedURIs == null){
			allowedURIs = new ArrayList<String>();
			allowedURIs.add(fConfig.getInitParameter("loginActionURI"));
			allowedURIs.add("/JSFCrudApp/javax.faces.resource/main.css.xhtml");
			allowedURIs.add("/JSFCrudApp/javax.faces.resource/theme.css.xhtml");
			allowedURIs.add("/JSFCrudApp/javax.faces.resource/primefaces.js.xhtml");
			allowedURIs.add("/JSFCrudApp/javax.faces.resource/primefaces.css.xhtml");
			allowedURIs.add("/JSFCrudApp/javax.faces.resource/jquery/jquery.js.xhtml");
			allowedURIs.add("/JSFCrudApp/javax.faces.resource/messages/messages.png.xhtml");
			allowedURIs.add("/JSFCrudApp/javax.faces.resource/images/ui-icons_2e83ff_256x240.png.xhtml");
			allowedURIs.add("/JSFCrudApp/javax.faces.resource/images/ui-icons_38667f_256x240.png.xhtml");
		}
	}

eu fiz chamada para uma página e vi quais urls estavam sendo solicitada a cara request.

Foi só isso. [=

Hmm… meus requests sao todos os diretorios dentro de resources mesmo CSS + imagens

ficaria assim?

allowedURIs.add("/MeuProjeto/javax.faces.resource/css/estilos.css.xhtml");
allowedURIs.add("/MeuProjeto/javax.faces.resource/css/interior.css.xhtml");
allowedURIs.add("/MeuProjeto/javax.faces.resource/img/imagem1.png.xhtml");
allowedURIs.add("/MeuProjeto/javax.faces.resource/img/imagem2.png.xhtml");
allowedURIs.add("/MeuProjeto/javax.faces.resource/img/imagem3.png.xhtml");

etc … ?

[quote=rafa120]Hmm… meus requests sao todos os diretorios dentro de resources mesmo CSS + imagens

ficaria assim?

allowedURIs.add("/MeuProjeto/javax.faces.resource/css/estilos.css.xhtml");
allowedURIs.add("/MeuProjeto/javax.faces.resource/css/interior.css.xhtml");
allowedURIs.add("/MeuProjeto/javax.faces.resource/img/imagem1.png.xhtml");
allowedURIs.add("/MeuProjeto/javax.faces.resource/img/imagem2.png.xhtml");
allowedURIs.add("/MeuProjeto/javax.faces.resource/img/imagem3.png.xhtml");

etc … ?

[/quote]Você tentou? Deu algum erro? Funcionou? [=

Estou fora de casa, estou trabalhando… por isso nao testei
mas nao tenho mto tempo, entao o quanto eu ja puder adiantar e chegar em casa, melhor :wink:

Hm…testei e não deu certo

tentei de várias formas

allowedURIs.add("/ControleChanges/resources/css/interior.css");
allowedURIs.add("/ControleChanges/javax.faces.resource/css/interior.css");
allowedURIs.add("/resources/css/interior.css");

Alguma sugestao?

Senhores, que história é essa de passar requisições de CSS pelo filtro de autenticação?

Se o CSS não está sendo carregando, o problema está nas telas ou no web.xml mal configurado que deve estar aplicando o filtro para todas as urls.

Poderia dar um exemplo onde você carrega esse CSS na páginas de login e nas páginas autenticadas?

[quote=Bruno Laturner]Senhores, que história é essa de passar requisições de CSS pelo filtro de autenticação?

Se o CSS não está sendo carregando, o problema está nas telas ou no web.xml mal configurado que deve estar aplicando o filtro para todas as urls.

Poderia dar um exemplo onde você carrega esse CSS na páginas de login e nas páginas autenticadas?[/quote]Já cansei de ter esse problema. Coloque seu CSS dentro da área protegida do site. Seu filtro não barraria o acesso a ele?

Sim, barraria.

A questão é, por que estão colocando CSS dentro área protegida do site?

A parte que está dentro do filter é a que está declarada no web.xml

<url-pattern>/pages/*</url-pattern>

Ou seja, pelo que sei o que está dentro de pages está dentro do filter, se estiver fora, nao. Certo?

Como pode ver no primeiro post, tenho a pasta resources que tem css e img, que não faço referencia a eles no web.xml

nao sei se posso estar confundindo algo… mas se nao esta funcionando, algo de errado tem rs

Qual a url do css que você está chamando no html dessas páginas?

Onde carrego o css nas minhas paginas

login.xhtml (lembrando que essa está aparecendo o css normalmente, a index que não carrega o css)

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">
 <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	
	<title>STG Changes</title>
	
	<!-- print stylesheet MUST follow imported stylesheets -->
        <link rel="stylesheet" href="resources/css/estilos.css" />
	<link rel="stylesheet" type="text/css" href="resources/css/screen.css"/>
	<link rel="stylesheet" type="text/css" href="resources/css/interior.css"/>
	
    
	<style type="text/css" media="all">
		.callout {padding:0; margin:.5em 1em 1em 0; border:1px solid #ccc; height:1%;}
		.pointer { cursor: pointer }
		#content-sidebar .callout {padding:0; margin:.5em 0 1em 0; border:1px solid #ccc; height:1%;}
		#content .callout h2 {margin-top:0;}
		#content .callout h3 {margin:0; padding:.5em .5em;}
		#content .callout p {padding-left:.5em; padding-right:.5em;}
		#content .callout ul {margin-left:.5em;}
	</style>

</h:head>

index.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">
 <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	
	<title>STG Changes</title>
	
	<!-- print stylesheet MUST follow imported stylesheets -->
        <link rel="stylesheet" href="resources/css/estilos.css" />
	<link rel="stylesheet" type="text/css" href="resources/css/screen.css"/>
	
        <style type="text/css">
            html{
                height: 100%;
            }
            body{
                height: 80%;
            }
        </style>
        
</h:head>

No index.xhtml tenta trocar por …/resources ou /resources, vê qual deles funciona.

http://www.nce.ufrj.br/ginape/cursohtml/conteudo/ligacoes/absrel.htm

Sim, barraria.

A questão é, por que estão colocando CSS dentro área protegida do site?[/quote]Vai do requisito do cara uai.
Se ele não quer expor um css da vida ou qualquer outra coisa, ele poe na área protegida. O.o

Deu certo, Bruno!

foi com …/resources

Valeu mesmo, simples e rápido.

Obrigadao!

Valeu também, Hebert

O seu exemplo no blog consegui pegar umas coisas que precisava também.

abração