Validar usuario com Filtro

3 respostas
U

Bom, na minha aplicação web fiz um filtro para verificar na sessão se recupera o atributo Pessoa com o usuario logado. Caso retorne nulo, invalida sessão e retorna para página de login.

O problema está quando mapeio o filtro para atuar em cada requisição da aplicação com

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

como na página de login, index.jsp, o usuario não foi registrado na sessão ainda, o filtro redireciona para própria index.jsp com a msg de erro.
Ou seja, nunca consigo logar no sistema!!

Se eu colocar todas outras JSPs, fora a index, dentro da pasta “jsp”, por exemplo, e maper o filtro com

<url-pattern>/jsp/*</url-pattern>

quando o filtro redireciona para a pagina de login (com RequestDispacher) a página não carrega o CSS !!!

O ideal para mim seria <url-pattern>todas, menos index.jsp</url-pattern> hehe :grin:

Mas como isso não existe, peço ajuda!

Como resolvo isso??
Qualquer sugestão é válida, agradeço desde já!

3 Respostas

R

Uchoaaaa, tive esse mesmo problema e fiz o seguinte:

Lá no Filter, verifico as permissões e, em um determinado ponto capturo a URI e pergunto se há a palavra index na URI:

//se tiver a palavra index na URI, deixa passar

if( uri.indexOf(index) != -1 ){

chain.doFilter(req, res);

}else{

…

}

…

Não sei se é a melhor forma, mas funcionou! hehe

U

“Revailton”:
Uchoaaaa, tive esse mesmo problema e fiz o seguinte:

Lá no Filter, verifico as permissões e, em um determinado ponto capturo a URI e pergunto se há a palavra index na URI:

//se tiver a palavra index na URI, deixa passar

if( uri.indexOf(index) != -1 ){

chain.doFilter(req, res);

}else{

…

}

…

Não sei se é a melhor forma, mas funcionou! hehe

Hhmm, interessante, cara…
Vou dar uma olhada :wink:
Não me parece errado nem deselegante…
Valeu!

U

…e tudo funciona!

Fiz o seguinte:

public void doFilter(...) throws ...  {
				
		if( isFiltrarURI(request) )			          //filtra!	
			filtrarRequisicao(request, response, chain);

		else								     //não filtra!
			chain.doFilter(request, response);				
		
	}

e

private boolean isFiltrarURI(ServletRequest request) {

		HttpServletRequest  httpRequest  = (HttpServletRequest) request;
		
		String uri = httpRequest.getRequestURI();
		String path = httpRequest.getContextPath() + "/";
		
		
		if(uri.equalsIgnoreCase(path))	//index.jsp
			return false;
		
		else if(...)   //demais URIs em que o filtro nao deve ser aplicado
			return false;
		
		else
			return true;
	}

Valeu!

Criado 7 de maio de 2007
Ultima resposta 10 de mai. de 2007
Respostas 3
Participantes 2