Получение идентификатора сеанса с помощью Spring Security - PullRequest
22 голосов
/ 22 августа 2010

В целях ведения журнала я хотел бы создать регистратор, который автоматически добавляет идентификатор текущего сеанса в записанные строки.
Для зарегистрированных пользователей это не проблема:

((WebAuthenticationDetails) SecurityContextHolder.getContext().getAuthentication().getDetails())
    .getSessionId()

проблема в том, что до входа пользователя в систему getAuthentication() возвращает null.Есть ли другой способ получить идентификатор сеанса, не имея ссылки на текущий ответ или что-то в этом роде?

1 Ответ

50 голосов
/ 22 августа 2010

Вы можете использовать

RequestContextHolder.currentRequestAttributes().getSessionId();

Это зависит от RequestContextHolder Spring, поэтому его следует использовать с DispatcherServlet Spring MVC или вы должны объявить RequestContextListener. Также сеанс будет создан, если не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...