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
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
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.
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.:
[code]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);
}
}[/code]