Duvida no servlet.Filter?

3 respostas
dijava

pessoal alguem pode me dar um ajuda com filter, eu tenho um filter que é

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

ou seja qualquer pagina direcionada vai passar pelo meu filtro. esse filtro ve se o cara esta logado ou nao caso nao esteja ele redireciona para a pagina de login

if(usr == null){
        		HttpServletResponse resp = (HttpServletResponse)response;
        		resp.sendRedirect("/MyApp/login.jsp");
        		return;
        	}

ai q esta o problema pq qnd eu redireciono para o login ele entra na condicao q esta na q no caso é ‘*’ ocasionando um loop infinito !
é possivel eu colocar uma excecao no para justamente burlar esse problema ?

3 Respostas

dijava

e ai alguem pode me ajudar com isso ?

Tiago_Farias

Essa é dureza. Não. Não existe match exclusivo pra a tag filter-mapping. Infelizmente. Vc pode incluir urls através de expressões regulares básicas, mas não tem como excluir algumas através do xml. Por outro lado, vc pode evitar algumas das urls via código. Teoricamente, é ruim fazer isso, pq vc meio q contraria o seu web.xml, dizendo q ele faz uma coisa, qd por debaixo dos panos ele faz outra. Mas realmente não sei outra solução pra isso. =/

Tiago_Farias

Pensando bem… isso é interessante:

tuh pode criar outro Filter mapeado com a url da tua página de login. Daí, esse filtro novo seria chamado imediatamente antes do teu filtro de verificar se o usuário tá logado. Quando fosse detectado q a tua página de login está sendo chamada, o filtro novo poderia setar um atributo qualquer no request e chamar o próximo filtro(o que checa se o usuário tá logado). O teu filtro de acesso verificaria se o atributo existe no request e, caso exista, ele simplesmente chama o chain.doFilter(), pulando a execução do filtro de acesso. Deu pra sacar a idéia?

[]s.

Criado 11 de junho de 2010
Ultima resposta 14 de jun. de 2010
Respostas 3
Participantes 2