PR

【Laravel】他のデバイス上のセッションを無効化する方法

【Laravel】他のデバイス上のセッションを無効化する方法 プログラミング
【Laravel】他のデバイス上のセッションを無効化する方法

phpでLaravelを利用している人は多いと思います。ログイン認証などLaravelで用意しているものを使えば、あっという間に作れますからね。

そんなLaravelで他のデバイス上のセッションを無効化にする機能はないか?と調べていたらありましたので、紹介したいと思います。

ちなみに本記事で紹介する機能はLaravel5.6~となります。

このブログは現役のエンジニア(プログラマー歴が約12年)の僕(よしたか)が2019年12月後半から日々更新しております。

もしもアフィリエイトは会員登録後も無料です!
今すぐ会員登録してアフィリエイトを始めよう!

Laravelで他のデバイス上のセッションを無効化するとは?

他のデバイス上のセッションを無効化するとは?これだけではよくわかりませんよね。

例えばですが、

ID: test PW : test

この情報でChromeからtestアカウントにログインしているとします。

Firefoxでもこのtestアカウントにログインしパスワード(PW)を変更しても、Chromeでログインしているセッションは有効なままになってしまいます。

こういう時に利用するのが、今回紹介する『他のデバイス上のセッションを無効化する』といった機能になります。

Laravelで他のデバイス上のセッションを無効化する手順

では実際の手順を見ていきましょう。

AuthenticateSessionミドルウエアを有効化

「app/Http/Kernel.php」クラスの「web」ミドルウェアグループ中を変更します。

// \Illuminate\Session\Middleware\AuthenticateSession::class,
↓
\Illuminate\Session\Middleware\AuthenticateSession::class,

上記のようにコメントアウトします。

ちなみに「web」ミドルウェアグループに関しては、「routes/web.php」全体に適用されるグループとなります。

logoutOtherDevicesメソッドを利用

例えばですがパスワード変更処理が行われるControllerで、

use Illuminate\Support\Facades\Auth;

「Auth」ファサードを参照します。

そして、

Auth::logoutOtherDevices($request->get('password'));

このように「logoutOtherDevices」関数に"変更後のパスワード"を渡してあげるだけでOKです。簡単ですね。

Laravel5.6のドキュメントにも記載されています。

5.6 認証 Laravel

まとめ

この記事のおさらい
  • Laravelで他のデバイス上のセッションを無効化する事は可能
  • ただしバージョンが5.6~なのでそれ以前は何かしら組み込む必要あり

いかがだったでしょうか。

意外とこういった情報ってググっても検索が出てこないものです。ただ個人的にはパスワード変更ではなく、単純に別デバイスログイン不可(例えばPCとSPで同時ログイン不可)にする機能がLaravelで用意されていればもっといいな~と思いました。

ちなみに、WordpressもLinuxも利用できるレンタルサーバーはエックスサーバーがオススメです。