Controle de sessão pelo Spring Security
11/09/2013 20:21
0
Estou tentanto limitar a minha aplicação a possuir apenas um usuário logado, com a mesma senha, por vez, mas aparentemente não está funcionando.

No meu resource.groovy eu coloquei:


sessionRegistry(SessionRegistryImpl)

concurrencyFilter(ConcurrentSessionFilter) {

sessionRegistry = sessionRegistry
logoutHandlers = [
ref("rememberMeServices"),
ref("securityContextLogoutHandler")
]
expiredUrl='/login/concurrentSession'
}

concurrentSessionControlStrategy(ConcurrentSessionControlStrategy, sessionRegistry) {
alwaysCreateSession = true
exceptionIfMaximumExceeded = true
maximumSessions = 1
}


No Bootstrap.groovy:


def init = { servletContext ->

//Registro de filtro para acesso concorrente.
SpringSecurityUtils.clientRegisterFilter('concurrencyFilter', SecurityFilterPosition.CONCURRENT_SESSION_FILTER)
//faz uma porrada de coisa
}


E no Config.groovy:

grails.plugins.springsecurity.useHttpSessionEventPublisher = true


Não gera excesão, mas eu testei 2 navegadores abertos, sem salvar cookie, e ambos logaram, o que não deveria acontecer.

Alguma idéia do que pode ser?

Desde já agradeço as respostas.
Tags: spring, security, session, filter


1
Hmmm...creio que você precisa informar ao SpringSecurity para utilizar o seu bean de estratégia de controle de sessão. tente isso, no seu Bootstrap.groovy:


class BootStrap {

//...
def authenticationProcessingFilter
def concurrentSessionControlStrategy

def init = { servletContext ->
//configura o filtro, como você já está fazendo...
authenticationProcessingFilter.sessionAuthenticationStrategy = concurrentSessionControlStrategy
}

13/09/2013 14:42



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