ラボ > Laravel、Lumen:ユーザー認証関連
laravel8 任意のユーザーを強制ログアウトさせる
何かしらの理由(垢BANや管理者による退会処理…など)でログイン中のユーザーを強制的にログアウトさせたい(※ミドルウェア(middleware)が絡む)
作成日:2023-01-05, 更新日:2023-09-20
私の環境
WIN+Docker+Ubuntuでlaravelを使うための作業メモ
基本
何かしらの理由(垢BANや管理者による退会処理…など)でログイン中のユーザーを強制的にログアウトさせたい
いくつか方法があるらしいけどミドルウェアで制御してもらう
処理の流れ
- ミドルウェアの作成
- カーネルに登録
- 確認
ミドルウェアの作成
ファイルの作成
▼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」のほうに追加したり、違うトコに記載したりする
確認
ログインしてからログイン不可になるようにユーザー情報を書き換えて、ログインが必要なページを表示させる