Heim  >  Artikel  >  Backend-Entwicklung  >  Laravel5.6 und Thinkphp3.2 verwenden Redis, um Sitzungen zu teilen

Laravel5.6 und Thinkphp3.2 verwenden Redis, um Sitzungen zu teilen

不言
不言Original
2018-07-07 17:06:462090Durchsuche

Dieser Artikel stellt hauptsächlich die Lösung der Verwendung von Redis zum Teilen von Sitzungen zwischen laravel5.6 und thinkphp3.2 vor. Jetzt kann ich ihn mit Ihnen teilen

In der Praxis: Das historische Projekt wurde mit thinkphp3.2 entwickelt. Nun ist eine Aktualisierung der Funktionen geplant. Die Entwicklung der aktualisierten Funktionen erfolgt mit laravel5.6.

Problembeschreibung

Es gibt mehrere Schlüsselprobleme, 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

Session 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

Zu diesem Zeitpunkt, wenn thinkphp die Sitzung speichert, wird es wird PHPREDIS_SESSION als Präfix gespeichert.

Redis in Laravel öffnen

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

Weil 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 spezifischen Implementierungsideen sind:
1 Holen Sie sich das native Cookie.
2 Verbinden Sie PHPREDIS_SESSION mit dem Formularschlüssel
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.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Das obige ist der detaillierte Inhalt vonLaravel5.6 und Thinkphp3.2 verwenden Redis, um Sitzungen zu teilen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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