rafa120
Fevereiro 18, 2013, 8:20am
#1
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. [=
rafa120
Fevereiro 18, 2013, 4:27pm
#3
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 .
rafa120
Fevereiro 18, 2013, 5:20pm
#5
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. [=
rafa120
Fevereiro 18, 2013, 5:53pm
#7
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? [=
rafa120
Fevereiro 18, 2013, 6:00pm
#9
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
Fevereiro 18, 2013, 11:23pm
#10
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?
rafa120
Fevereiro 19, 2013, 3:49am
#14
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?
rafa120
Fevereiro 19, 2013, 4:02am
#16
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
rafa120
Fevereiro 19, 2013, 4:22am
#19
Deu certo, Bruno!
foi com …/resources
Valeu mesmo, simples e rápido.
Obrigadao!
rafa120
Fevereiro 19, 2013, 4:24am
#20
Valeu também, Hebert
O seu exemplo no blog consegui pegar umas coisas que precisava também.
abração