Maison  >  Article  >  développement back-end  >  laravel5.6 et thinkphp3.2 utilisent Redis pour partager une session

laravel5.6 et thinkphp3.2 utilisent Redis pour partager une session

不言
不言original
2018-07-07 17:06:462092parcourir

Cet article présente principalement la solution consistant à utiliser redis pour partager des sessions entre laravel5.6 et thinkphp3.2. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

En pratique Parmi les projets, le projet historique a été développé avec thinkphp3.2. Il est désormais nécessaire de mettre à jour les fonctions. Il est prévu que les fonctions mises à jour soient développées avec 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-là, lorsque thinkphp stocke le session, sera stocké sous le préfixe PHPREDIS_SESSION.

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 le propre cookie 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.

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn