doFilter trabalhando errado... Algumas nao filtram! :-( Help

9 respostas
woquiton

Oi Pessoal :wink:

Eu terminando um controle de acesso, que verifica página a página jsp se ela tem acesso ou nao. Só que agora surgiu um problema, nao sei por que está acontecendo isso.

Algumas páginas nao passam no doFilter. Quando o usuário digita o link por completo (link que ele nao tem acesso, mas conhece), no próprio browser… ele acaba tendo acesso por que nao passa no FilterAcesso.doFilter, que é o método que eu verifico se ele pode ou nao acessar…

Estou pedindo pra nao ser verdade que terei de colocar em todo JSP pra verificar… Estou fazendo alguma coisa errada? Existe alguma forma, onde eu configure, sei lá, pra forçar passar no doFilter? no Tomcat?
Fico olhando o log, e nao passa pela FilterAcesso, ele ignora, considera desnecessário.
Porém, quando é um link, ele passa por lá… e confirma o acesso. Ou entao, quando abro em outro browser e após ele abrir, forço de novo com “Ctrl F5” … aí ele passa no Filter e a pagina que estava aberta, mostra bloqueio no acesso.

Nao sei o que fazer… alguém pode me ajudar??? Please… :wink:

:arrow: = WEB.XML

<filter>

<filter-name>Acesso</filter-name>

<filter-class>br.gov.eafajt.STT.FilterAcesso</filter-class>

</filter>

<filter-mapping>

<filter-name> Acesso </filter-name>

/*

</filter-mapping>

:arrow: FilterAcesso

public class FilterAcesso implements Filter{

private FilterConfig filterConfig = null;

/** Creates a new instance of FilterAcesso */
public FilterAcesso() {
}

public void destroy() {
    this.filterConfig = null;
}

public void doFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain) throws java.io.IOException, javax.servlet.ServletException {

    String pagina = req.getRequestURI();


//TODO CÓDIGO ONDE COMPARO A pagina DIGITADA COM O UMA RECUPERADA NO ARRAYLIST


}


public void init(javax.servlet.FilterConfig filterConfig) throws javax.servlet.ServletException {
    
    this.filterConfig = filterConfig;
    
}

}

9 Respostas

danieldestro

Não seria cache?

woquiton

Daniel…

Eu acho que nao… por que antes eu tinha dado CTRL F5, e limpa o cache…

:roll:

danieldestro

O seu web.xml está errado. o Certo seria assim:

&lt;filter&gt; &lt;filter-name&gt;Acesso&lt;/filter-name&gt; &lt;filter-class&gt;br.gov.eafajt.STT.FilterAcesso&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt; Acesso &lt;/filter-name&gt; &lt;url-pattern&gt;/*&lt;/url-pattern&gt; &lt;/filter-mapping&gt;

woquiton

Daniel

Nao sei o que aconteceeu ao copiar - colar aqui… mas tá assim mesmo.

Eu to achando que pode ser o cache mesmo… existe alguma forma de limpar o cache qdo o usuário se logar?

Obrigado,

danieldestro

Você precisa ajustar as META-TAGS do HTML:

//para não fazer o cache httpRes.setHeader&#40;&quot;Cache-Control&quot;,&quot;no-cache&quot;&#41;; httpRes.setHeader&#40;&quot;Pragma&quot;,&quot;no-cache&quot;&#41;; httpRes.setDateHeader&#40;&quot;Expires&quot;,0&#41;;

woquiton

Onde coloco isso Daniel?

danieldestro

Servlet, JSP, Filter, ou qualquer lugar que possa acessar o objeto HttpServletResponse.

woquiton

Daniel

Tentei colocar no doFilter:

/*HttpServletResponse httpRes;

    httpRes.setHeader("Cache-Control","no-cache"); 
    httpRes.setHeader("Pragma","no-cache"); 
    httpRes.setDateHeader("Expires",0);
    */

Mas tem q inicializar a variável, e se colocar =null, vai dar NullPointerException …
Como é q funciona exatamente, pq ainda nao entendi muitoo bem.

Desculpa ae, Obrigado

danieldestro

Inicie assim:

HttpServletResponse httpRes = (HttpServletResponse) request;

Esse “request” vem como parâmetro do doFilter().

Criado 20 de agosto de 2004
Ultima resposta 24 de ago. de 2004
Respostas 9
Participantes 2