В целях ведения журнала я хотел бы создать регистратор, который автоматически добавляет идентификатор текущего сеанса в записываемые строки.
Для зарегистрированных пользователей это не проблема:
((WebAuthenticationDetails) SecurityContextHolder.getContext().getAuthentication().getDetails())
.getSessionId()
Проблема заключается в том, что до входа пользователя в систему getAuthentication ()
возвращает null
. Есть ли другой способ получить идентификатор сеанса, не имея ссылки на текущий ответ или что-то в этом роде?
Вы можете использовать
RequestContextHolder.currentRequestAttributes().getSessionId();
. Это зависит от Spring RequestContextHolder
, поэтому его следует использовать с Spring MVC DispatcherServlet
или у вас должен быть ] RequestContextListener
объявлен. Также будет создан сеанс, если он не существует.