[JAVA] Unterbrechen Sie die Frühjahrssitzung

Einführung

Wollten Sie schon immer eine bestimmte Sitzung Ihrer Webanwendung von außen trennen? "Gefährlicher Kerl gefunden! Vorerst trennen" Mögen. Darüber hinaus ohne die Webanwendung zu berühren ... Das Ziel ist eine Webanwendung, die Spring-Session verwendet und die Sitzung in Redis abhält. Dann einfach "Sitzungsinformationen aus Redis löschen" Ich dachte. Ich werde experimentieren, um zu sehen, ob es funktioniert. Wenn Sie einen intelligenteren Weg kennen, würde ich es begrüßen, wenn Sie darauf hinweisen könnten.

Einschränkungen usw.

Es wurde bestätigt, dass der Inhalt dieses Artikels in den folgenden Umgebungen funktioniert.

Bereiten Sie Redis vor

Docker ist einfach für Redis vorzubereiten. Ich habe das benutzt. Erstellen einer Redis-Umgebung mit Docker-Compose

$ docker-compose up -d 

Starten Sie also Redis.

Vorbereitung der Bewerbung für die Frühjahrssitzung

Ich kann ohne die Spring-Session-Anwendung nicht experimentieren, aber ich kann keine schöne einfache Beispiel-App finden. Also habe ich eine einfache App erstellt und sie unten platziert. Sprint-Session-Sample

Spring-Session-Sample-Verhalten

1. Führen Sie die App im heruntergeladenen oder geklonten Verzeichnis aus

$ ./gradlew bootRun

Wenn Sie eine Verbindung zum Standardport von Redis (6379) herstellen und dieser erfolgreich gestartet wird

Die obige Zeichenfolge wird angezeigt.

2. Greifen Sie auf http: // localhost: 8080 / zu

image.png Geben Sie in jedes Feld eine Zeichenfolge ein und klicken Sie auf die Schaltfläche [Weiter] Die eingegebene Zeichenfolge wird auf dem nächsten Bildschirm angezeigt, der die Sitzung erbt. image.png Wenn die Sitzung abläuft (Standard 30 Minuten), wechselt der Fehlerbildschirm. image.png Dieser Zustand wird durch eine externe Operation reproduziert.

Beobachtung und Betrieb von Redis

Beobachten Sie, welche Elemente in Redis registriert sind, und verwalten Sie die Sitzung.

$ docker exec -it [CONTAINER ID] /bin/bash
root@[CONTAINER ID]:/data# redis-cli
127.0.0.1:6379>(Befehl hier eingeben)
127.0.0.1:6379> flushall

Wenn Sie auf http: // localhost: 8080 / zugreifen und Redis ...

127.0.0.1:6379> keys *
1) "spring:session:sessions:0b288446-d209-4ecc-bfc4-7adf405e68a7"
2) "spring:session:sessions:expires:0b288446-d209-4ecc-bfc4-7adf405e68a7"
3) "spring:session:expirations:1604421420000"

Sie können 3 Artikel sehen. "0b288446-d209-4ecc-bfc4-7adf405e68a7" ist die Sitzungs-ID von HttpSession, und die Informationen werden tatsächlich gespeichert.

1) "spring:session:sessions:0b288446-d209-4ecc-bfc4-7adf405e68a7"`

Es sieht aus wie oben. Wenn Sie dies löschen, sollte die Sitzung ablaufen!

Lass es uns versuchen

1. Greifen Sie auf http: // localhost: 8080 / zu

image.png

2. Bestätigen und Löschen der Sitzung erneut

127.0.0.1:6379> keys *
1) "spring:session:sessions:0b288446-d209-4ecc-bfc4-7adf405e68a7"
2) "spring:session:sessions:expires:0b288446-d209-4ecc-bfc4-7adf405e68a7"
3) "spring:session:expirations:1604421420000"

Sitzungsinformationen löschen

127.0.0.1:6379> del spring:session:sessions:0b288446-d209-4ecc-bfc4-7adf405e68a7 
(integer) 1
127.0.0.1:6379> keys *
1) "spring:session:sessions:expires:0b288446-d209-4ecc-bfc4-7adf405e68a7"
2) "spring:session:expirations:1604421420000"

3. Versuchen Sie, die Taste [Weiter] zu drücken

image.png

** Sie konnten die Sitzung zwangsweise trennen. ** ** ** 2 Artikel übrig

127.0.0.1:6379> keys *
1) "spring:session:sessions:expires:0b288446-d209-4ecc-bfc4-7adf405e68a7"
2) "spring:session:expirations:1604421420000"

Da das TTL (Ablaufdatum) festgelegt ist, können Sie es vorerst belassen.

Recommended Posts

Unterbrechen Sie die Frühjahrssitzung
Durchbrechen Sie mit MyBatis den japanischen Tisch
Brechen Sie eine lange, schlanke Syntax in der Mitte