Pegar todas as sessões que estão no servidor
05/01/2015 17:13
1
Boa tarde Galera.

Seguinte estou procurando saber como faço para pegar todas as sessions que estão ativas no servidor.

Depois de ter essa lista vou pegar uma especifica e excluir ela do servidor.

Alguém sabe me dizer como posso fazer isso no grails?

Obrigado desde já.
Tags: Session, usuario, servidor, service, server


1
Opa,

talvez este plugin te ajude.


1
Kico primeiramente obrigado pela sugestão do plugin, o mesmo funcionou perfeitamente.

Porem eu estou utilizando na minha app o spring security para gerenciar os logins.

Oque eu preciso fazer agora é pegar o sessionId do usuario que esta logando no momento e guardar no banco de dados, então em um dado momento o servidor vai pegar os sessionId do banco de dados de todos os usuario logados e comparar com aqueles que estão com sessão aberta no servidor (lista que o plugin app-info fornece, comparando os sessionId). Caso encontre algum nessa lista de sessões então a aplicação da um invalidate para encerrar a sessão aberta.

A questão é como pegar o sessionId do usuario que acabou de logar na aplicação atravez do spring security ??

Teria como eu conseguir pegar o usuario que esta logado em uma determinanda sessão com o app-info ??

Obrigado desde já.
06/01/2015 15:22


1
Encontrei a solução.

Cada vez que um usuario realiza o login com sucesso eu salvo no banco de dados o sessionId dele.

session.getId()

Quando eu quiser invalidar algum usuario então eu pego a lista de sessões que esta valida no servidor atraves do plugin app-info e extraio os sessionId das sessões.

def allSessions = scopesInfoService.getSessionsInfo()
for(int x = 0; x < allSessions.size(); x++){
def atual = allSessions[x].session.getId()
....
}

Depois eu comparo essa lista de sessionId com o sessionId do usuario que eu quero invalidar.

def allSessions = scopesInfoService.getSessionsInfo()
def usuarioInstance = Usuario.get(1)
for(int x = 0; x < allSessions.size(); x++){
def atual = allSessions[x].session.getId()
if(atual == usuarioInstance.sessionId){
atual.invalidate()
}
}

Obrigado pela ajuda.
06/01/2015 15:46


0
Bacana Carrielbr!

Uma outra solução que você pode levar em consideração pode ser a implementação de um authentication provider customizado. Assim você poderia centralizar sua lógica de negócio toda nele.



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto