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