Hebert_Coelho 18 de fev. de 2013
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. [=
rafa120 18 de fev. de 2013
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 () ;
}
}
}
Hebert_Coelho 18 de fev. de 2013
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 .
rafa120 18 de fev. de 2013
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" );
}
}
Hebert_Coelho 18 de fev. de 2013
eu fiz chamada para uma página e vi quais urls estavam sendo solicitada a cara request.
Foi só isso. [=
rafa120 18 de fev. de 2013
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 … ?
Hebert_Coelho 18 de fev. de 2013
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 … ?
Você tentou? Deu algum erro? Funcionou? [=
rafa120 18 de fev. de 2013
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
rafa120 18 de fev. de 2013
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?
Bruno_Laturner 19 de fev. de 2013
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?
Hebert_Coelho 19 de fev. de 2013
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?
Já cansei de ter esse problema. Coloque seu CSS dentro da área protegida do site. Seu filtro não barraria o acesso a ele?
Bruno_Laturner 19 de fev. de 2013
Sim, barraria.
A questão é, por que estão colocando CSS dentro área protegida do site?
rafa120 19 de fev. de 2013
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
Bruno_Laturner 19 de fev. de 2013
Qual a url do css que você está chamando no html dessas páginas?
rafa120 19 de fev. de 2013
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>
Bruno_Laturner 19 de fev. de 2013
No index.xhtml tenta trocar por …/resources ou /resources, vê qual deles funciona.
http://www.nce.ufrj.br/ginape/cursohtml/conteudo/ligacoes/absrel.htm
Hebert_Coelho 19 de fev. de 2013
Hebert Coelho:
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?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
rafa120 19 de fev. de 2013
Deu certo, Bruno!
foi com …/resources
Valeu mesmo, simples e rápido.
Obrigadao!
rafa120 19 de fev. de 2013
Valeu também, Hebert
O seu exemplo no blog consegui pegar umas coisas que precisava também.
abração