Jsp acesso do usuario

3 respostas
C

existe alguma maneira de impedir que um usuario se loga duas vezes
, quero dizer um id e uma senha iguais possam se logar ao mesmo tempo

gostaria de impedir isto, estou usando jsp , sem struts

3 Respostas

M

não sei se é a melhor maneira de fazer isso, mas ja resolvi esse problema assim:

na tabela de login do banco, que armazena login e senha, cria mais um coluna para armazenar true ou false, ou outros valores.

exemplo:

se o usuario tentar se conectar, verifica o valor da coluna, se for false(quer dizer que ele nao esta conectado),entao conecta e atualiza o valor da coluna para true.
mas se for true(quer dizer que ele ja esta conectado), entao ele nao se conecta novamente.

V

Simples…no momento do login…voce passa alguma variável para o objeto de session…tipo uma "flag"no request de logado e nao logado… depois no jsp vc verifica o valor dela…caso estaja com o status “logado”…vc redireciona pra outra jsp invalidando a sessao

J
"Vinicius_M":
Simples...no momento do login..voce passa alguma variável para o objeto de session..tipo uma "flag"no request de logado e nao logado... depois no jsp vc verifica o valor dela..caso estaja com o status "logado"..vc redireciona pra outra jsp invalidando a sessao

Se o usuario logar em um computador ou browser diferente na mesma maquina, isso não vai funcionar.

A ideia seria o que o marcosbrandao falou, ou criar uma classe Singleton com uma coleção onde você adiciona os usuarios que estão logados, e na hora do login verifica se o usuario já não está lá... Crie tambem um SessionListener pra poder tirar o usuario de lá (ou alterar o valor no banco como na outra solução) caso a sessão dele seja destruida.

Ex.:

public class Usuario{
   private int id;
   private String nome;
   private String login;
   private String senha;

   //get & set

   public boolean equals(Object obj){
       if(!(obj instanceof Usuario)) return false;
       Usuario usu = (Usuario) obj;
       return usu.getId()==getId();
   }
}

public class LoginHelper{
   private List logados;
   private static LoginHelper instance;

   private LoginHelper(){
   }

   public static LoginHelper getInstance(){
      return instance;
   }

   public void addUsuario(Usuario usu){
      logados.add(usu);
   }

   public void removerUsuario(Usuario usu){
      logados.remove(usu);
   }

   public boolean isLogado(Usuario usu){
      return logados.contains(usu);
   }
}
Criado 3 de agosto de 2006
Ultima resposta 3 de ago. de 2006
Respostas 3
Participantes 4