Filtros

7 respostas
cain

Pessoal criei um filtro pra validar a sessão e no meu doFilter() implementei o seguinte código:

if (page.length()>8){
    page = page.substring(page.length()-8,page.length()-3);
  }

  if (!page.equals("login")){

  if (session.getAttribute("user")==null){			
   RequestDispatcher rd =  request.getRequestDispatcher("/jsp/login.jsp");
   rd.forward(req,res);
   }

  }		
  chain.doFilter(req,res);

Seria a forma mais adequada? De qualquer forma eu queria saber com n aplicar a checagem para a pagina de Login. No codigo tentei pegar o nome da JSP mas ele invoca o método sempre que o cliente faz um request pro servidor, ou seja, qd carrega as imagems tb aí desse jeito n rola :frowning:

7 Respostas

andre_a_s

Como está definido esse filtro no seu web.xml?

cain
<filter>

<filter-name>sessionFilter</filter-name>

<filter-class>projeto.core.SessionValidatorFilter</filter-class>

</filter>

<filter-mapping>
<filter-name>sessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

andre_a_s

cain:
<filter-mapping>
<filter-name>sessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

O problema é q vc está definindo que tudo terá q passar pelo filtro( <url-pattern>/*</url-pattern> )
Coloque apenas oq vc quer, por exemplo

&lt;url-pattern&gt;/pages/pagina.jsp&lt;/url-pattern&gt;
cain

Tem como fazer um NOT? Pq a única página q está fora da regra é a de Login

andre_a_s

Tenta isso colocar isso dentro da tag do seu filtro:

&lt;init-param&gt; &lt;param-name&gt;exclude&lt;/param-name&gt; &lt;param-value&gt;/login.jsp&lt;/param-value&gt; &lt;/init-param&gt;

cain

Não funcionou mas valeu pela ajuda

furutani

Uma solução simples é: por que você não põe a página de login em um lugar que não esteja mapeado para o filter?

Criado 23 de junho de 2005
Ultima resposta 23 de jun. de 2005
Respostas 7
Participantes 3