Alguém sabe como proibir o acesso ao mesmo cliente em diferentes máquinas?Estou tentando implementar isso mas tó apanhando legal.
Estou salvando na base de dados sempre que o usuário se logar, o problema é quando ele sair da aplicação. Com javascript e browsers diferente o código nem sempre funciona.
Pois sempre que o usuário sair da aplicação tenho que ir na base e mudar o estado do usuário
O foda é que esse evento nem sempre é chamado pelo IExplorer e sem falar que o mesmo evento é chamado qd o usuário faz um refresh da página!!
Uma coisa simples de se fazer e tó levando uma surra desgraçada!!!!!!!!!!!!!!!!!!!!!!
Oq vc pode é fazer é que quando o usuário logar, verificar se ele já está logado em algum outro lugar. Vc salvaria em algum lugar um id ou alguma que identificaria a primeira máquina do cara.
AO logar novamente vc veria se o ID de login mudou e verificaria isso a cada request, através de um filtro por exemplo. Se o ID solicitado estiver diferente do login atual, é pq o cara mudou de máquina.
Meio feio isso mas é o modo que eu consegui pensar.
A
AbelBueno
Eu seguiria os seguintes passos:
Criaria uma lista de usuários logados no contexto de aplicação.
Não salvaria no banco pois se tirar a app do ar, não terá mais ninguém logado.
Se rodar sua app em mais de um servidor daí pode ter problemas com isso, precisará de um controle mais apurado.
Utilize algum mecanismo de keep-alive para manter as sessões no ar
Configurando um tempo de sessão baixo, tipo 1 minuto, e algum dispositivo que dê refresh na sessão constantemente
( O GUJ faz algo semelhante…dá uma olhada no fonte do html)
Quando alguém logar, verifica a lista de logados e registra o login lá.
Quando houver um login do mesmo cliente, você decide como sua aplicação tratará:
Matando a sessão anterior, bloqueando a nova, vai da sua necessidade.
Quando o cliente efetuar logout normalmente, simplesmente tira da lista.
Com esse mecanismo acredito que consiga superar esse problema do unload.
F
fabioEM
AbelBueno:
Eu seguiria os seguintes passos:
Criaria uma lista de usuários logados no contexto de aplicação.
Não salvaria no banco pois se tirar a app do ar, não terá mais ninguém logado.
Se rodar sua app em mais de um servidor daí pode ter problemas com isso, precisará de um controle mais apurado.
Utilize algum mecanismo de keep-alive para manter as sessões no ar
Configurando um tempo de sessão baixo, tipo 1 minuto, e algum dispositivo que dê refresh na sessão constantemente
( O GUJ faz algo semelhante…dá uma olhada no fonte do html)
Quando alguém logar, verifica a lista de logados e registra o login lá.
Quando houver um login do mesmo cliente, você decide como sua aplicação tratará:
Matando a sessão anterior, bloqueando a nova, vai da sua necessidade.
Quando o cliente efetuar logout normalmente, simplesmente tira da lista.
Com esse mecanismo acredito que consiga superar esse problema do unload.
Pois é!
Na real, tentei aqui no guj me logar de 2 pcs diferente e o mesmo deixou.
Tentarei a ideia da lista que me parece a melhor o problema porém será sempre quando o usuário por algum motivo sair da aplicação sem que a aplicação perceba.
F
fabioEM
Alguém sabe pq o evento de fechar no browser no IE equivale é a tecla 0 que é igual a tecla de F5?
F
fabioEM
Consegui, mas que parto!!!
rafaduka
Poderia compartilhar conosco? :roll:
F
fabioEM
Claro,
Acrescentei uma coluna na tabela usuário em_uso do tipo boolean assim tenho o controle do logout e login.
Um problema aparentemente simples (usando Chrome, Firefox foi fácil) foi identificar quando o usuário saísse da aplicação. O Explorer usa o mesmo código de teclado seja para atualizar que para sair do navegador. Essa função do windows.beforeunload é chamada em ambos os casos!!
Depois de umas cabeçadas e bastante google search encontrei o seguinte: