Maison  >  Article  >  cadre php  >  Concernant la solution de laravel5.6 et thinkphp3.2 utilisant Redis pour partager des sessions

Concernant la solution de laravel5.6 et thinkphp3.2 utilisant Redis pour partager des sessions

藏色散人
藏色散人avant
2021-06-27 16:03:192326parcourir

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"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer