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.
Es wurde bestätigt, dass der Inhalt dieses Artikels in den folgenden Umgebungen funktioniert.
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.
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
$ ./gradlew bootRun
Wenn Sie eine Verbindung zum Standardport von Redis (6379) herstellen und dieser erfolgreich gestartet wird
Die obige Zeichenfolge wird angezeigt.
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. Wenn die Sitzung abläuft (Standard 30 Minuten), wechselt der Fehlerbildschirm. Dieser Zustand wird durch eine externe Operation reproduziert.
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!
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"
** 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.