Dans le projet actuel, le projet historique a été développé en utilisant thinkphp3.2, et maintenant la fonction a besoin à mettre à jour. La partie fonction mise à jour devrait être développée à l'aide de laravel5.6.
Description du problème
Plusieurs problèmes clés doivent être résolus, dont l'un est celui de l'authentification des utilisateurs. Autrement dit, une fois que le système 1 s'est connecté, le système 2 reconnaît automatiquement ses informations de connexion. C'est-à-dire que l'essentiel doit être résolu : le problème de la session de partage Laravel et Thinphp.
Conception du projet
La session utilise Redis pour le stockage. Thinkphp et Laravel accèdent à Redis ensemble et obtiennent automatiquement les informations utilisateur authentifiées stockées dans Redis sur la base du même cookie.
Solution
thinkphp active le support redis
thinkphp3.2 n'a pas de support redis pour les sessions intégrées. À l'heure actuelle, nous utilisons les paramètres de php pour l'activer. Dans index.php, nous ajoutons les deux lignes d'instructions suivantes :
ini_set("session.save_handler", "redis"); ini_set("session.save_path", "tcp://redis:6379");
Vous pouvez également l'ajouter au fichier de configuration config.php
À ce moment, lorsque thinkphp stocke la session, elle sera PHPREDIS_SESSION est stocké sous forme de préfixe.
Ouverture de Redis dans Laravel
La méthode d'ouverture de Redis dans Laravel est relativement compliquée. Pour des informations spécifiques, vous devez vous référer à la documentation officielle pour utiliser composer pour installer Predis et effectuer les configurations associées.
Laravel obtient la session de thinkphp
Parce que laravel a complètement obsolète la session intégrée de PHP. Il n'y a donc aucun moyen pour nous d'obtenir des informations via $_SESSION (vous pouvez même obtenir une erreur de variable non définie). Parce que les cookies de Laravel sont cryptés. Par conséquent, nous ne pouvons pas utiliser les propres cookies de Laravel pour obtenir des informations sur les cookies.
Les idées d'implémentation spécifiques sont :
1 Obtenez le cookie natif.
2 Connectez PHPREDIS_SESSION à la clé du formulaire
3 Utilisez redis pour obtenir directement la valeur stockée dans la clé
... use Illuminate\Support\Facades\Redis; ... $cookie = $_COOKIE['PHPSESSID']; $session = Redis::get('PHPREDIS_SESSION:' . $cookie);
Cette $session est la valeur de session dans le système thinkphp.
Tutoriels associés recommandés : "tutoriel laravel"