ラボ > Laravel、Lumen:ユーザー認証関連

laravel8 任意のユーザーを強制ログアウトさせる

何かしらの理由(垢BANや管理者による退会処理…など)でログイン中のユーザーを強制的にログアウトさせたい(※ミドルウェア(middleware)が絡む)

作成日:2023-01-05, 更新日:2023-09-20

私の環境

WIN+Docker+Ubuntuでlaravelを使うための作業メモ

基本

何かしらの理由(垢BANや管理者による退会処理…など)でログイン中のユーザーを強制的にログアウトさせたい
いくつか方法があるらしいけどミドルウェアで制御してもらう

処理の流れ

  1. ミドルウェアの作成
  2. カーネルに登録
  3. 確認

ミドルウェアの作成

ファイルの作成

▼artisanコマンドでミドルウェアのファイル作成

$ ./vendor/bin/sail php artisan make:middleware CheckBanned

→「app/Http/Middleware/CheckBanned.php」が作られる

ファイルの修正

▼「app/Http/Middleware/CheckBanned.php」にuse追加

use Illuminate\Support\Facades\Auth;

▼「app/Http/Middleware/CheckBanned.php」の「handle()」

public function handle(Request $request, Closure $next)
{
    if( auth()->check() ){
        if( auth()->user()->xxxx == xxx ){ // ログアウトさせたいユーザーの条件
            Auth::logout();
            $request->session()->invalidate();
            $request->session()->regenerateToken();
            return redirect()->route('login');
        }
    }
    return $next($request);
}

カーネルに登録

▼「app/Http/Kernel.php」に追加

~ 省略 ~
protected $middlewareGroups = [
    'web' => [
        ~ 省略 ~
        \App\Http\Middleware\CheckBanned::class,
    ],

    'api' => [
        ~ 省略 ~
    ],
];
~ 省略 ~

※状況に応じて「api」のほうに追加したり、違うトコに記載したりする

確認

ログインしてからログイン不可になるようにユーザー情報を書き換えて、ログインが必要なページを表示させる

関連項目