skillup

技術ブログ

PHP

Laravelでのアプリ間のログイン連携

投稿日:2018年11月11日 更新日:

実務でLaravelで複数のアプリを作成し、アプリ同士でログイン連携をさせるという機能が実務であったため、メモします。

例えばhttp://example.comという売上管理のアプリでログイン認証をしており、ログイン後、http://customer.examle.comにもそのログイン状態が引き継ぎたいという状態です。

例えば顧客管理のアプリを別管理していて、売上管理アプリの内部からリンクで繋げたい場合などがそうです。

どちらかというとメインとなるアプリがあり(この場合でいうと売上管理)、そこでログインした後、サブのアプリ(この場合、顧客管理)にもログインを引き継ぐというケースが多いかと思います。

やるべきこと

sessionはdatabase

当たり前ですが、sessionはDBでないと引き継げないのでDBにしましょう。

具体的には.envで

と設定してあげれば大丈夫です。

APP_KEYを同一にする

内部はブラックボックス化されており、どういう連携を取っているかはわかりませんが、ログイン連携をするにはLaravelのAPP_KEYを同一にする必要があります。

私が試したケースではメインのAPP_KEYにサブのAPP_KEYを書き換えて合わせました。(*メインは通常のphp artisan key:generateで生成)

SESSION_DOMAIN

サブのアプリはサブドメインで運用していますので、ドメイン間でクッキーを共通化できるようにしておきましょう。

おそらくドメインが共通でないと無理かと思います。

今回のドメインの例だとサブのアプリの.envに

SESSION_DOMAIN=example.com

と設定してあげればOKです。

認証テーブルはconnectionを切り替えて設定

Laravelではconnectionを切り替えることで複数のデータベース間に接続をすることができますので、認証で使うモデルにメインのアプリのconnecitonを設定してあげればOKです。

.env

User.php(例えばこのモデルを認証で使う場合)

注意点

Laravelのバージョンにより認証方法のロジックが変わるようで、2つのアプリのバージョンに注意しましょう。

メイン 5.4.36

サブ 5.5.41

はOKだったのですが、サブを5.5.44にあげたら認証ロジックが変わったようでunserialize(): Error at offset 0 of 40 bytesなるエラーが発生してログイン連携ができませんでした。

 

-PHP
-,

執筆者:


フレームワークのマイナーバージョンチェンジの影響に関して – skillup へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

cakePHPの認証-Authコンポーネント

ひさびさにPHPをやる機会があり、短期での開発だったため、cakePHPを使いました。 以前やったことがあったんですが、もう2年以上たっていますね。 といいつつも昔のソースを見ながらやることで思い出し …

no image

CakePHP2系でのテスト処理

cakePHP2系でのテストの処理について。 PHPでのテストといえばphpunitが有名かと思います。cakePHPでも標準でphpunitがはいっており、ユニットテストを行うことができます。 Co …

no image

Laravelでのテスト

Laravelを使ってUnitTestをする場合の注意点など。 Contents1 事前準備2 テストデータ作成機能3 実際のテストコード 事前準備 まずはアプリのディレクトリにあるphpunit.x …

no image

cakePHPのSSL設定+jQueryのError Loading Page

cakeで作ったアプリの認証画面でhttps環境だとError Loading Pageというエラーメッセージがでてしまい、ログインできないという事象が発生。 最初はSSLが原因かとおもっていたんです …

no image

nginxをいれているサーバーでのPHP停止

ちょっとトラブル対応的なネタです。 先日、PHPで書かれているシステムが突然使用できなくなるという連絡があるお客様からありました。 原因としてはカゴヤのサーバー再起動により、php-fpmが起動してい …

アーカイブ