Heim > PHP-Framework > Laravel > Bezüglich der Lösung von Laravel5.6 und Thinkphp3.2 mit Redis zum Teilen von Sitzungen

Bezüglich der Lösung von Laravel5.6 und Thinkphp3.2 mit Redis zum Teilen von Sitzungen

藏色散人
Freigeben: 2021-06-29 10:36:15
nach vorne
2383 Leute haben es durchsucht
Problembeschreibung

Es gibt mehrere Hauptprobleme, die gelöst werden müssen, darunter das Problem der Benutzerauthentifizierung. Das heißt, nachdem sich System 1 nur angemeldet hat, erkennt System 2 automatisch seine Anmeldeinformationen. Das heißt, das Wesentliche muss gelöst werden: das Problem der gemeinsamen Nutzung von Laravel- und Thinphp-Sitzungen.

Projektdesign

Sitzung verwendet Redis zur Speicherung. Thinkphp und Laravel greifen gemeinsam auf Redis zu und erhalten automatisch die in Redis gespeicherten authentifizierten Benutzerinformationen basierend auf demselben Cookie.

Lösung

thinkphp aktiviert Redis-Unterstützung

thinkphp3.2 bietet keine Redis-Unterstützung für integrierte Sitzungen. Derzeit verwenden wir die Einstellungen in PHP, um es zu aktivieren. In index.php fügen wir die folgenden zwei Anweisungszeilen hinzu:

ini_set("session.save_handler", "redis");
ini_set("session.save_path", "tcp://redis:6379");
Nach dem Login kopieren

Sie können es auch zur Konfigurationsdatei config.php hinzufügen

Wenn Thinkphp zu diesem Zeitpunkt die Sitzung speichert, wird sie mit PHPREDIS_SESSION als Präfix gespeichert .

Laravel öffnet Redis

Die Methode zum Öffnen von Redis in Laravel ist relativ kompliziert. Spezifische Informationen finden Sie in der offiziellen Dokumentation, um Predis mit Composer zu installieren und entsprechende Konfigurationen durchzuführen.

laravel erhält die Sitzung von thinkphp

Da Laravel die integrierte Sitzung von PHP vollständig veraltet hat. Daher gibt es für uns keine Möglichkeit, Informationen über $_SESSION zu erhalten (es könnte sogar ein Fehler aufgrund einer undefinierten Variablen auftreten). Weil die Cookies von Laravel verschlüsselt sind. Daher können wir die eigenen Cookies von laravel nicht verwenden, um Cookie-Informationen zu erhalten.

Die konkreten Umsetzungsideen sind:

1 Erhalten Sie native Cookies.

2 Verbinden Sie PHPREDIS_SESSION, um den Schlüssel zu bilden

3 Verwenden Sie Redis, um den im Schlüssel gespeicherten Wert direkt abzurufen

...
use Illuminate\Support\Facades\Redis;
...
    $cookie = $_COOKIE['PHPSESSID'];
    $session = Redis::get('PHPREDIS_SESSION:' . $cookie);
Nach dem Login kopieren

Diese $session ist der Sitzungswert im thinkphp-System.

Verwandte Tutorial-Empfehlungen: „Laravel-Tutorial

Das obige ist der detaillierte Inhalt vonBezüglich der Lösung von Laravel5.6 und Thinkphp3.2 mit Redis zum Teilen von Sitzungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage