phpでLaravelを利用している人は多いと思います。ログイン認証などLaravelで用意しているものを使えば、あっという間に作れますからね。
そんなLaravelで他のデバイス上のセッションを無効化にする機能はないか?と調べていたらありましたので、紹介したいと思います。
ちなみに本記事で紹介する機能はLaravel5.6~となります。
もしもアフィリエイトは会員登録後も無料です!
今すぐ会員登録してアフィリエイトを始めよう!
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のドキュメントにも記載されています。
まとめ
いかがだったでしょうか。
意外とこういった情報ってググっても検索が出てこないものです。ただ個人的にはパスワード変更ではなく、単純に別デバイスログイン不可(例えばPCとSPで同時ログイン不可)にする機能がLaravelで用意されていればもっといいな~と思いました。
ちなみに、WordpressもLinuxも利用できるレンタルサーバーはエックスサーバーがオススメです。