Heim  >  Artikel  >  PHP-Framework  >  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

藏色散人
藏色散人nach vorne
2021-06-27 16:03:192326Durchsuche
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");

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);

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen