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
“