CONTROLE DE USUARIOS

03/02/2010

Olá, estou desenvolvendo um aplicativo e me deparei com a seguinte questao como controlar os login dos usuarios, tenho um servidor de aplicacao em delphi 2010 mais ainda nao implementei essa parte, tipo se o usuario estiver logado em uma maquina x o mesmo usuario nao pode logar em outra maquina em quanto a sessao dele estiver ativa na maquina x, como implementar essa regra no servidor tipo to meio sem noçao pra isso!
Paulo Silva

Paulo Silva

Curtidas 0

Respostas

Rodrigo Mourão

Rodrigo Mourão

03/02/2010

Olá Amigo,   O que eu faço nas minhas aplicacoes é o seguinte: Eu tenho um metodo no servidor de app para login e um para logout. Quando o usuario loga eu marco no cadastro dele em um campo chamado logado como true. Assim quando eu vou verificar o login vejo se este campo esta true. Se estiver true entao ele esta logado.   Quando ele faz logout entao eu mudo o campo logado para false. Voce pode perguntar mas se o cara fechar a aplicacao?   Simples como eu sei quem esta locado no onClose do form principal eu chamo o logout.   Acho que isso ajuda.   Duvidas estou a disposição.   Abs.
GOSTEI 0
Paulo Silva

Paulo Silva

03/02/2010

e se o cara finalizar o processo da aplicacao?
GOSTEI 0
Paulo Silva

Paulo Silva

03/02/2010

como fazer? ele vai fikar logado la no servidor nao? ja que no cadastro dele foi setado para true
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

03/02/2010

Olá Paulo, Eu lhe passei uma solução que atende em boa parte dos casos. Agora o problema levantado por você daria mesmo que seja utilizada outra técnica pois de uma forma ou de outro o servidor de app precisar ser informado que o usuário não esta mais logado, seja com um flag no banco ou não. O usuário encerrar o processo da aplicação não é uma coisa usual, mas pode acontecer e isso realmente travaria o usuário seja usando um flag no banco ou outra técnica qualquer pois ai o processo da aplicação foi interrompido. Neste caso, na minha humilde opinião não seria problema da rotina mas sim da interrupção da aplicação. Bem pode ser viagem minha mas uma opção seria sempre que o usuário invocar um método no servidor vc gravaria data e hora. Assim no login vc testaria se ele esta logado e a hora da ultima chamada ao servidor. Caso no login o usuário esteja marcado como logado vc verificaria o intervalo da ultima chamada ate o presente momento. Se for superior a 5 min por exemplo vc setava o flag para false e efetuaria um novo login. Neste caso se o usuário por algum motivo para o processo da aplicação teria que aguardar 5 min ate poder se logar de novo. E um sugestão. Att,
GOSTEI 0
Paulo Silva

Paulo Silva

03/02/2010

Não seria mais usual eu colocar um parametro no meu login tipo alem do login e senha o kra me informar o nome da maquina? tipo login (usuario: shortstring; password: shortstring; machine: shortstring) ae eu testo if (machine = Fmachine)  entao logo o cidadao dnovo? ja que o windows nao aceita duas maquinas com o mesmo nome entao essa tecnica pode ate ser valida nao? ja c o kara tentar acessar de outra maquina vai dar um exception dizendo que o usuario ja tem uma sessao aberta pois ae eu vou verificar se o usuario ja esta logado em uma maquina diferente da que ele me informou.
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

03/02/2010

Tai, uma coisa que não havia pensado. Agora como seria feito o LogOff. Imagine que o cara esta trabalhando, esta logado e a maquina dele queima (muito azar rsrsrsrsr). Se ele tentar logar em outro maquina então não vai conseguir. O ideia é perfeita sim, so temos que tratar isso. embora nao seja comum a maquina queimar mas pode acontecer. Fora isso achei a solução muito interessante. Att,
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

03/02/2010

Olá amigo, Há mais alguma dúvida ?? Podemos encerrar o chamado ?? Att,
GOSTEI 0
Paulo Silva

Paulo Silva

03/02/2010

Pode fechar sim o chamado!
GOSTEI 0
POSTAR