Spring - Как добавить атрибут сеанса только один раз за сеанс - PullRequest
0 голосов
/ 28 мая 2019

В моем приложении Spring Boot я добавляю имя пользователя в качестве пользовательского атрибута сеанса. Я сделал это так, в диспетчере Tomcat я могу видеть, кто в настоящее время использует приложение:

enter image description here

Я добавил javax.servlet.Filter для добавления имени пользователя. Но это рекомендуемый способ сделать это? В конце концов, атрибут добавляется при каждом запросе. Предоставляет ли Spring обратный вызов, который выполняется только один раз за сеанс?

Ответы [ 2 ]

1 голос
/ 28 мая 2019

После добавления атрибута в HttpSession этот атрибут будет существовать в сеансе при условии, что срок сеанса не истек или вы не удалили его из сеанса.Поэтому я не вижу смысла в реализации Filter для добавления атрибута в HttpSession для каждого запроса, так как этот атрибут уже существует в сеансе с момента его добавления.

Кроме того, что выSpring Security уже выполняет (ps в SecurityContextPersistenceFilter), и я бы не стал делать это один раз.На самом деле этот атрибут сеанса SPRING_SECURITY_CONTEXT является тем же объектом, который мы используем SecurityContextHolder.getContext() для доступа к информации о текущем пользователе.

Это означает, что если у объекта Authentication, установленного в SecurityContextHolder, есть toString(), реализованный для печати имени пользователя (например, this ), вы также можете увидеть имя пользователяв атрибуте сеанса SPRING_SECURITY_CONTEXT в Tomcat Manager.

0 голосов
/ 28 мая 2019

Spring MVC имеет инструменты для работы с сессиями, и в разделе @SessionAttributes этого учебника фактически обсуждается регистрация компонента с областью действия Session, чтобы он вызывался для каждого нового сеанса.

подробнее здесь

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