ホームページ  >  記事  >  バックエンド開発  >  laravel5.6 と thinkphp3.2 は redis を使用してセッションを共有します

laravel5.6 と thinkphp3.2 は redis を使用してセッションを共有します

不言
不言オリジナル
2018-07-07 17:06:462131ブラウズ

この記事では主に、redis を使用して laravel5.6 と thinkphp3.2 の間でセッションを共有する解決策を紹介します。これには一定の参考値があります。今、共有します。必要な友人はそれを参照できます。

実践 このうち、過去にthinkphp3.2で開発していたプロジェクトは機能のアップデートが必要となり、アップデートされた機能はlaravel5.6で開発する予定です。

問題の説明

解決する必要のある重要な問題がいくつかあり、その 1 つはユーザー認証の問題です。つまり、システム 1 がログインするだけで、システム 2 はそのログイン情報を自動的に認識します。つまり、laravelとthinphpの共有セッションの問題という本質を解決する必要があります。

プログラム設計

セッションはストレージに Redis を使用します。 Thinkphp と laravel は一緒に redis にアクセスし、同じ cookie に基づいて redis に保存されている認証されたユーザー情報を自動的に取得します。

解決策

thinkphp で redis サポートが有効になる

thinkphp3.2 には統合セッションの redis サポートがありません。現時点では、php の設定を使用して有効にします。 Index.php に、次の 2 行のステートメントを追加します。

ini_set("session.save_handler", "redis");
ini_set("session.save_path", "tcp://redis:6379");
これを config.php 構成ファイルに追加することもできます

現時点では、thinkphp がセッションを保存するときに、 PHPREDIS_SESSION がプレフィックスとして保存されます。

laravel で redis を開く

laravel で redis を開く方法は比較的複雑です。具体的な情報については、公式ドキュメントを参照して、composer を使用して Predis をインストールし、関連する構成を実行する必要があります。

laravel は thinkphp のセッションを取得します

laravel は PHP の組み込みセッションを完全に非推奨にしたためです。したがって、$_SESSION を通じて情報を取得する方法はありません (未定義の変数エラーが発生する可能性もあります)。なぜなら、laravelのCookieは暗号化されているからです。そのため、laravel独自のCookieを利用してCookie情報を取得することはできません。

具体的な実装アイデアは次のとおりです。
1 ネイティブ Cookie を取得します。
2 PHPREDIS_SESSION を結合してキーを形成します。
3 redis を使用して、キーに格納されている値を直接取得します。

...
use Illuminate\Support\Facades\Redis;
...
    $cookie = $_COOKIE['PHPSESSID'];
    $session = Redis::get('PHPREDIS_SESSION:' . $cookie);

この $session は、thinkphp システムのセッション値です。

上記がこの記事の全内容です。皆様の学習に少しでもお役に立てれば幸いです。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

以上がlaravel5.6 と thinkphp3.2 は redis を使用してセッションを共有しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。