5
respostas

Controle de sessão unica.

Prezados,

Fiz uma pagina conforme aprendi nas aulas e tudo funciona como esperado, porém gostaria de fazer um controle para permitir apenas uma sessão por usuário. Fiz uma pesquisa pela internet e vi vários exemplos de sessão mas nenhum atende o que necessito.

Preciso que ao logar com uma conta as demais sessões dessa conta sejam derrubadas. Permitindo apenas uma sessão ativa do usuário.

Exemplo: Estou logado com o usuário admin e uma outra pessoa loga com o usuário admin, nesse momento a sessão da pessoa deve funcionar normalmente e a minha deveria ser derrubada me direcionando para tela de login.

Alguém tem alguma luz de como realizar esse controle?

5 respostas

Oi Victor, tudo bom?

Uma forma de realizar essa funcionalidade é guardar o id da ultima sessão criada para um usuario no banco. Ao realizar o login, você verifica resgata esse id, remove a sessão referente e cria outra pega o novo id e guarda no banco novamente.

Assim, sempre que uma conta for logada você estará invalidando outros logins =)

Qualquer problema é só falar.

Abraço.

André,

Obrigado pela rápida resposta.

Veja se entendi direito. Dessa forma, ao fazer a validação de que a sessão e diferente da que já estava armazenada deveria enviar um "die" para matar a sessão antiga armazenada, certo?

Como posso enviar esse "die" de forma que a tela seja redirecionada para o login?

Na verdade, tendo em vista que o que um usuario guarda no navegador dele é o id da sessão (cookie session_id), se a gente destruir a sessão e adicionar outra quando o usuario com o id antigo tentar acessar o sistema, ela ja será obrigado a se autenticar novamente =)

André,

Obrigado pela ajuda, vou fazer um teste e comento o resultado. Meu medo é que minha pagina é estática e fica apenas exibindo um vídeo, não há navegação para obrigar o "reload" da pagina, e nem poderia fazer isso pois iria carregar novamente o vídeo. Acho que dessa forma a pagina permaneceria "ativa" até que o usuário precisasse dar um "reload".

Mas vou testar a solução proposta.

Hmm... nesse caso seria legal você dar uma olhada em como fazer com que sua pagina carregada faça essa verificação.

Tendo em vista que a tela é um video só, se o usuario carregar a validação só ocorrerá no proximo request mesmo.

Talvez seja legal você dar uma olhada em ferramentas mais robustas pra front como node, assim você vai conseguir gerenciar melhor os estados dessa tela ja carregada.