Я создаю приложение grails с плагином 1.2.7.3 с пружинной защитой, а также с пружинной защитой -ui 0.2 и хотел бы получить список ВСЕХ пользователей, которые в настоящее время вошли в систему (т. е. имеют текущий активный сеанс). Пользователи могут войти в систему либо через контроллер входа (daoAuthenticationProvider), либо автоматически через файл cookie rememberMe. Я реализовал ниже код, используя ConcurrentSessionControlStrategy создать sessionRegistry:Как получить список всех зарегистрированных пользователей (в том числе куки memme) в grails с пружинной безопасностью
в /conf/spring/resources.groovy:
import org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy
import org.springframework.security.web.session.ConcurrentSessionFilter
import org.springframework.security.core.session.SessionRegistryImpl
import org.springframework.security.web.authentication.session.SessionAuthenticationStrategy
beans = {
userDetailsService(lablore.MyUserDetailsService)
sessionRegistry(SessionRegistryImpl)
sessionAuthenticationStrategy(ConcurrentSessionControlStrategy, sessionRegistry) {
maximumSessions = -1
}
concurrentSessionFilter(ConcurrentSessionFilter){
sessionRegistry = sessionRegistry
expiredUrl = '/login/concurrentSession'
}
}
В/плагинов/весна-безопасности основного/CONF/DefaultSecurityConfig. заводной
useHttpSessionEventPublisher = true
В контроллере:
controller{
def sessionRegistry
action(){
def loggedInUsers = sessionRegistry.getAllPrincipals()
}
}
Это хорошо работает для - пользователи, которые заходят на страницу входа в систему - пользователи, выходящие через ссылку «выхода» -sers who session заканчивается HOWEVER, он НЕ работает для пользователей, которые автоматически аутентифицируются с помощью cookie cookie с сохранением memMe. Он не видит, что у них есть новый сеанс. Если я правильно понимаю, это потому, что RememberMeAuthenticationFilter «дальше вверх» в цепочке фильтров по сравнению с ConcurrentSessionFilter, который является сервером SessionRegistry? Или, я что-то испортил с моими конфигурациями ....
Любая помощь в том, как заставить это работать, было бы здорово!
Спасибо!
http://stackoverflow.com/questions/18161974/is-it-possible-to-get-a-list-of-all-active-sessions – user1690588
другой возможностью было бы использовать прослушиватель сеанса. Ему не важно, как пользователь был аутентифицирован. Http: // StackOverflow.ком/вопросы/24573024/как к магазину-сессии Идентификаторы-и-адъюнкт-их-с пользователем / –