Problema com sessão em servlet

7 respostas
J

Ola pessoal, bom dia.
Estou trabalhando num projeto de autenticação e controle de acesso de usuários, e me surgiu o seguinte problema, quando um usuário se autentica eu gravo uma sessão com os dados de permissões para outras aplicações do sistema, o problema é que cada usuário que se autentica posterior ao primeiro acaba pegando a mesma sessão, como se não fosse criada uma para cada usuário. Como é a primeira vez que trabalho com sessão não sei o que pode esta acontecendo, gostaria de saber se alguem tem alguma ideia, e se possível me dar uma dica de como resolver esse problema, desde já obrigado.

Batista

7 Respostas

black_fire

http://www.guj.com.br/posts/list/37773.java#200703

J

Se eu seguir a regra deste post, invalidando a sessão não vou conseguir recuperar a sessão para pegar as permissões do usuário que fica gravado na sessão quando o usuario se autentica.

black_fire

kra, lógico q não.

Veja o fluxo:

  1. Invalidar a Sessão;
  2. Usuário Logou;
    1.0 - Grava objeto na sessão;
    1.1 - Usou o objeto da Sessão;
    1.2 - Usou de novo o objeto da Sessão;
    1.3 - Usou mais uma vez o objeto da Sessão;

Lembre-se que se o usuário não está logado, ele não está usuando a aplicação, logo, vc não precisa do objeto…

entendeu agora?

J

black_fire:
kra, lógico q não.

Veja o fluxo:

  1. Invalidar a Sessão;
  2. Usuário Logou;
    1.0 - Grava objeto na sessão;
    1.1 - Usou o objeto da Sessão;
    1.2 - Usou de novo o objeto da Sessão;
    1.3 - Usou mais uma vez o objeto da Sessão;

Lembre-se que se o usuário não está logado, ele não está usuando a aplicação, logo, vc não precisa do objeto…

entendeu agora?

Beleza, entendi o que vc realmente quis dizer, so que meu problema não esta sendo causado por isso, pois quando um usuário acaba de entrar no sistema se outro entrar em seguida vai pegar as mesmas informações da sessão do outro…

brunobegnami

Cara, acho q vc está fazendo o seguinte:

Você está colocando essas informações do usuário (permissões, etc) na sessão certo? em algum momento vc está tirando da sessão, antes de colocar?

exemplo:

Para colocar na sessão, vc deve estar usando isso, creio eu:

...
HttpSession sessao = request.getSession(true);
...
sessao.setAttribute("alguma coisa",outracoisa);
...

Antes disso, tente tirar ele:

...
sessao.removeAttribute("alguma coisa");
...

Veja se ajuda.

[]'s

J

brunobegnami:
Cara, acho q vc está fazendo o seguinte:

Você está colocando essas informações do usuário (permissões, etc) na sessão certo? em algum momento vc está tirando da sessão, antes de colocar?

exemplo:

Para colocar na sessão, vc deve estar usando isso, creio eu:

...
HttpSession sessao = request.getSession(true);
...
sessao.setAttribute("alguma coisa",outracoisa);
...

Antes disso, tente tirar ele:

...
sessao.removeAttribute("alguma coisa");
...

Veja se ajuda.

[]'s

Obrigado já descrobri onde tava o erro…

Eu criava uma lista com Vector() desta forma,
Vecto Lista = new Vector();

Acontecia o seguinte, conforme os usuarios iam logando eu gravava as permisões deles nessa lista, só que deveria ser uma lista para cada usuario que logasse, o que acontecia era que essa lista estava sendo incrementada com as permissoes dos usuarios que iam logando, como eu sempre pegava as 5 posicoe da lista, sempre vinha as informacoes do primeiro usuario que logou. Para resolver o problema fiz assim, para criar a lista.

Vecto Lista = null;
Lista = new Vecto();

Ai adiciono as permissoes do usuario, assim toda vez que um usuario logar, a lista sempre ta vazia.

É isso ai…

V

Cara…
eu tava com um problema parecido um tempo atrás…
então criei uma classe DadosUsuario, e nela coloquei todos os atributos de acesso do usuário, pegando direto do banco por meio do Hibernate…

Depois você pega esse objeto “DadosUsúario” e grava na sessão.
Assim quando vc der um DadosUsuario usr = (DadosUsuario) session.getAttribute(“usuario”); vc pega os valores do objeto correspondente a quem está logado.

Aí só fazer as verificações (no meu caso fiz com JSTL).

Espero ter ajudado.
[ ]’ s !!

Criado 25 de julho de 2006
Ultima resposta 28 de jul. de 2006
Respostas 7
Participantes 4