Sessao no Servlet

6 respostas
I

Ola GUJ.
Tenho um servlet que coloca o usuario na sessão, eu não gostaria de verificar se o usuario está na sessão nas JSPs acho isso ruim, então criei um Filter Servlet mas o mesmo sempre diz que a sessão não existe. vejam.

Esse aqui é o servlet que crio a sessao, e dou um forward para a próxima página só que o Filter insiste em retornar para página de login dizendo que não existe uma sessão … o que eu estou fazendo de Errado ?

Obrigado.

sessao = req.getSession(true);
  usuarios user = new usuarios();
  sessao.setAttribute("Autenticado",user);

Esse é o Filter

public class oFiltro implements Filter{
    public void destroy(){
    }
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filter) throws IOException, ServletException{
       
       HttpServletRequest req = (HttpServletRequest) request;
       HttpServletResponse res = (HttpServletResponse) response;
       HttpSession sessao= req.getSession();
       boolean logado;
       
       if(sessao.getAttribute("Autenticado")== null)
          logado= false;
       else{
          if ( sessao.getAttribute("Autenticado").equals("true") )
             logado= true;
          else
             logado= false;
       }
       
       if (!logado){
          res.sendRedirect("/login.jsp");      
       }
       filter.doFilter( request, response ); 
    }
    public void init(FilterConfig arg0) throws ServletException {
    }    
 }

6 Respostas

Rafael_Steil

Vc esta colocando uma instancia de um objeto usuarios mas faz comparacao com “true” no teu filter. Ai vai dar false mesmo.

Rafael

I

Mas aqui nesse trecho eu não estou comparando ?

if ( sessao.getAttribute("Autenticado").equals("true") )
             logado= true;

Obrigado.

caiofilipini

Se o objeto que você procura não estiver na session, o getAttribute() vai retornar null. Teste da seguinte forma:

if (sessao.getAttribute("Autenticado") != null) { logado= true; }

[]'s

Rafael_Steil

igor_:
Mas aqui nesse trecho eu não estou comparando ?

if ( sessao.getAttribute("Autenticado").equals("true") )
             logado= true;

Obrigado.

Entao, mas vc esta comparando o retorno de getAttribute(“Autenticado”) com “true”, mas vc adicionou um objeto “usuarios” e nao uma String.

Rafael

I

Então eu devo usar assim ?

usuarios user =(usuarios)sessao.getAttribute("Autenticado");
        if(user==null){
             res.sendRedirect("/login.jsp");           
        }
Rafael_Steil

Bom, vc ja esta fazendo um if(sessao.getAttribute(“Autenticado”)== null) logo acima, entao essa outra comparacao nao seria necessaria.

Ou seja, se passar pelo primeiro if(), vc considera que o cara esta logado.

Rafael

Criado 9 de janeiro de 2005
Ultima resposta 9 de jan. de 2005
Respostas 6
Participantes 3