Рубрики
Без рубрики

Руководство по реактивной поддержке весенней сессии: Веб-сессия

Быстрое и практическое введение в реактивную поддержку весенней сессии.

Автор оригинала: baeldung.

1. введение

В этой статье мы узнаем, как объединить весеннюю сессию с весенним веб-потоком. В частности, мы узнаем, как использовать Spring Web Session, который объединяет Spring Session с WebFlux Spring Boot 2.

Весенняя Сессия определяется как “упрощенная Карта пар имя-значение”. Сеансы отслеживают значения, важные для сеанса HTTP, такие как Пользователи и Участники. Таким образом, мы можем использовать Session management вместе с новым реактивным веб-потоком Mono и Flux objects . Spring Session также поддерживает использование различных контейнеров приложений (а не только Tomcat).

Чтобы узнать больше о весенней сессии, ознакомьтесь с еще одной замечательной статьей здесь, на Baeldung .

2. Настройка Maven

Теперь давайте настроим и настроим наше приложение. К счастью, настройка вашего pom.xml это довольно легко сделать. Во-первых, нам нужно использовать Spring Boot 2.x.x вместе с соответствующими зависимостями весеннего сеанса. Добавьте новейшую версию через репозиторий Maven:

Затем мы добавим их в pom.xml :


    org.springframework.boot
    spring-boot-starter-webflux
    2.4.0


    org.springframework.boot
    spring-boot-starter-security
    2.4.0

 
    org.springframework.session 
    spring-session-core 
    2.4.0 

Эти три зависимости являются минимальными требованиями для управления сеансами в памяти. Для Redis используйте:

Затем добавьте следующее в pom.xml :


    org.springframework.boot
    spring-boot-starter-data-redis
    2.4.0


    org.springframework.session
    spring-session-data-redis
    2.4.0
 

Теперь давайте настроим наши классы.

3. Конфигурация В памяти

Чтобы использовать конфигурацию в памяти, добавьте класс config:

@Configuration
@EnableSpringWebSession
public class SessionConfig {
 
    @Bean
    public ReactiveSessionRepository reactiveSessionRepository() {
        return new ReactiveMapSessionRepository(new ConcurrentHashMap<>());
    }
}

Это связывает (реактивный) репозиторий с вашим менеджером сеансов. Он сохранит эти значения в HashMap .

Важно отметить, что класс конфигурации должен включать в себя @EnableSpringWebSession аннотацию .

4. Конфигурация Redis

А теперь давайте подключим Редиса. Чтобы использовать Redis для управления веб-сеансами, добавьте класс конфигурации:

@Configuration
@EnableRedisWebSession
public class RedisConfig {
 
    @Bean
    public LettuceConnectionFactory redisConnectionFactory() {
        return new LettuceConnectionFactory();
    }
}

Обратите внимание, что класс конфигурации должен включать в себя @EnableRedisWebSession аннотацию . Помните, что мы не можем использовать @EnableRedisWebSession и Включить весеннюю веб-сессию аннотации вместе, не вызывая исключения.

Docker – один из самых простых способов взаимодействия с Redis. После установки Docker нам нужно ввести только три команды, чтобы сделать это. Выполните команду, чтобы вызвать экземпляр Redis:

$ docker stop redis
$ docker rm redis
$ docker run -d --name redis -p 6379:6379 redis:4.0.5-alpine

Далее, давайте протестируем наше приложение.

5. На практике

Теперь давайте добавим реактивный RestController в наше приложение:

@GetMapping("/websession")
public Mono getSession(WebSession session) {
    session.getAttributes().putIfAbsent("note", "Howdy Cosmic Spheroid!");
    return Mono.just((String) session.getAttributes().get("note"));
}

Затем мы можем использовать WebSession , добавив параметр в наши обработчики REST. Мы можем получить или установить значения с помощью метода .GetAttributes () , который возвращает карту.

Давайте раскрутим наше весеннее приложение:

Теперь наше приложение можно посмотреть по адресу localhost:8080 и представит весеннюю страницу входа в систему. Попробуйте использовать учетные данные для входа по умолчанию ( -u admin -p пароль ):

После аутентификации мы можем изменить значения по умолчанию WebSession ( 0 и “Привет, Космический сфероид!” ). Выполните команду curl :

$ curl -i -H "Accept: application/json" -H "Content-Type:application/json" -X GET http://localhost:8080/websession/test?id=222&note=helloworld

или посетите URL-адрес http://localhost:8080/websession/test?id=222&note=helloworld . После этого JSON, возвращенный из localhost:8080/websession , отобразит обновленные Session значения:

Эта конечная точка, localhost:8080/веб-сеанс, возвращает текущий Веб-сеанс атрибуты id и примечание.

6. Заключение

Мы узнали, как добавить весеннюю веб-сессию в наши приложения Web Flux. Для получения дополнительной информации ознакомьтесь с отличной официальной документацией.

Как всегда, примеры кода, используемые в этой статье , доступны на GitHub.