Это то, что было исследовано моим коллегой:
Для поддержки @SessionScope
функциональных возможностей аннотации для нашего шлюза (UI - backend), во-первых, нам нужно настроить некоторую конфигурацию:
- В application.yml мы должны изменить параметр
http-only
сеанса на false:
сервер: сервлет: сеанс: cookie: только для http: false
Затем мы должны настроить время ожидания сеанса, чтобы оно соответствовало времени жизни нашего токена JWT:
сервер: сервлет: сеанс: время ожидания: 86400
Наконец, мы должны настроить политику создания сеанса.Это можно сделать с помощью
SecurityConfiguration.java
:
@ Переопределить общедоступную конфигурацию void (HttpSecurity http), генерирующую исключение {http.sessionCreationPolicy (SessionCreationPolicy.ALWAYS);}
С этого момента у нас будет сеанс, в котором будет храниться контекст Spring Secuirty для каждого аутентифицированного пользователя, но он никогда не будет использоваться для механизма аутентификации, поскольку у нас уже есть JWT для этой цели.Мы будем использовать сессию только для хранения пользовательских данных.
После настройки теперь мы можем создать пользовательский компонент для области действия сессии: CustomSessionScopeBean.java
:
@Component
@SessionScope
public class CustomSessionScopeBean{
@Getter
@Setter
///What ever you want to store in session scope
}