Spring Security Limitar Sessões por Usuário[Resolvido]
15 respostas
P
Psytheory
Bom dia Senhores(as) do GUJ
Algum de vocês já passou pela necessidade de limitar número de sessões por usuário com Spring Security.
Tipo, tenho a necessidade de limitar 1 usuário logado por login, se houver mais de um exibir uma mensagem informando que
já existe uma sessão ativa para aquele usuário e não é possível criar uma nova.
Tem como você limitar isso por filter normal, tem não?
Veja se o cara já está logado, se estiver bloqueie a nova tentativa.
F
FernandoFranzini
Esse é um dos motivos de pq eu desisti do spring security…ele não faz e para vc manualmente adicionar esse serviço no framework é um transtorno…detalhe quando muda a versão, quebra todo seu código.
P
Psytheory
Então …
Não teria como fazer isso via o Spring Security ???
F
FernandoFranzini
Psytheory:
Então …
Não teria como fazer isso via o Spring Security ???
Ele não faz.
Vc vai ter adicionar isso nele.
P
Psytheory
E como eu poderia adicionar essa regra nele ?
F
FernandoFranzini
Estudar a API dele e acrescentar mais um nivel de validação na sequencia de execução do filtro de segurança
Coloquei esse código dentro do do application context do spring security e resolvi meu problema
P
Psytheory
Boaaa dica nazarenoneto !!!
Mas desse modo apenas limitaria o número máximo de sessões, certo ?
E se eu tivesse um usuário por exemplo com o nome de user e eu apenas fosse permitir uma sessão para esse user de modo que
se ele deixasse uma sessão aberta em uma máquina e tentasse abrir uma outra sessão em outra máquina sem deslogar da máquina anterior
fosse impedido ?
N
nazarenoneto
Eu não tenho certeza, mas acho que desse modo, ele faz isso, se você tiver logado em uma maquina, na outra você não consegue logar, até que você faça o logoff na primeira maquina.
P
Psytheory
nazarenoneto,
Você tem razão, faz sim !!!
Show de bola a dica, brigadão pelo help !!!
Abração mano
G
g4j
Há um tempo atrás eu queria fazer exatamente isso.
O problema é se o usuário não fez logoff, mas simplesmente fechou o browser. A sessão vai continuar ativa até que o tempo definido no session-timeout acabe. Teste isso e nos conte o que acontece.
P
Psytheory
nazarenoneto,
Para fazer essa alteração você precisou alterar algo na tag de logout do springsecurity ?
Pois ao fazer logout não consigo mais realizar o login.
Tentei usar o delete-cookies=“JSESSIONID” na tag do logout, mas retorna erro. =/
P
Psytheory
Hehe …
Erro meu … é necessário configurar o listener no web.xml