2013-12-05 4 views
1

Im использование пружинной безопасности, и я хотел бы перебирает все открытую сессию и изменить тайм-аут, используя HttpSession.setMaxInactiveInterval(timeout);Как я могу получить все открытые сессии?

Я думал об использовании SessionRegistry.getAllSessions() но он возвращает только SessionInformation экземпляры, а не HttpSession объектов.

ответ

4

В Spring Security нет ничего, что сделало бы это - как вы заметили, SessionRegistry не сохраняет HttpSession экземпляров.

Таким образом, вы будете иметь, чтобы сохранить свою собственную карту активных сеансов, используя HttpSessionListener для записи создания сеанса и уничтожения (в значительной степени, как описано в ответе на your question from yesterday.

Это, вероятно, будет Map<String,HttpSession> где ключ - это идентификатор сеанса.

Вы можете затем перебирать эту карту в любое время и изменять объекты сеанса. Не забудьте использовать безопасную по потоку карту и удалить любые сеансы, когда они истекут (в методе sessionDestroyed)

+0

Спасибо, я попробую – lior

+0

Ответ от @Luke Taylor должен быть отмечен как ответ. Это способ сделать это, и он работает. –

Смежные вопросы