Sessao JSF

5 respostas
F

Tenho uma aplicação em JSF que seta o ID de um usuário quando loga no sistema, o login é controlado pelo próprio tomcat com o Realm. O problema é quando a sessão expira, o ID do usuário fica null, causando erro em certas partes do programa que precisam do ID do usuário. Teria alguma forma de configurar no tomcat ou no JSF para quando a sessão expirar se o usuário tentar acessar qualquer parte do programa solicitar o usuário e senha novamente?

Obrigado!

5 Respostas

F

Desculpe pedir denovo… mas não tem como fazer alguma coisa pelo web.xml ou tenho que fazer alguma coisa página por página para ver se o código do usuário ainda está na sessão?

Obrigado!

M

opa,

você pode criar um filtro, ou alguma coisa para isto. Mas pelo que eu saiba, você não precisa fazer isto, desde que a página que você está acessando já está em uma área protegida, o tomcat já encarrega do serviço.

:okok:

F

Eu vi um filtro para servlet

package br.com.javamagazine.jairelton1;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class FiltroSeguranca implements Filter {

      public void init(FilterConfig config) throws ServletException {

      }

      public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {
            HttpSession session = ((HttpServletRequest)req).getSession();
            Usuario usuario = (Usuario)session.getAttribute("usuario");
            if(usuario==null){
                  session.setAttribute("msg","Você não está logado no sistema!");
                  ((HttpServletResponse)res).sendRedirect("../index.jsp");
            }else{
                  chain.doFilter(req, res);
            }
      }
 
      public void destroy() {

      }
}

e no web.xml:

<filter>
            <filter-name>Filtro Seguranca</filter-name>
          <filter-class>br.com.javamagazine.jairelton1.FiltroSeguranca</filter-class>
      </filter>
      <filter-mapping>
            <filter-name>Filtro Seguranca</filter-name>
            <url-pattern>/admin/*</url-pattern>
      </filter-mapping>

O problema que esse não funciona no JSF, tenho que fazer alguma coisa diferente ou tem alguma configuração especifica para ser feita no tomcat? No momento quando a sessão expira ele seta o código do usuário para null e se ele acessa uma página que precisa desse código dá erro, queria que ele solicitasse login novamente.

Obrigado

M

Opa,

Mas este filtro independe se é em JSF, ou seja lá o que for… veja que ele funciona apenas para a pasta admin.

:okok:

F

Funcionou, era só um probleminha com o filter do myfaces…

Obrigado!

Criado 4 de julho de 2006
Ultima resposta 3 de ago. de 2006
Respostas 5
Participantes 2