1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravel ミドルウェア

Posted at

概要

ミドルウェアは、HTTPリクエストを検査およびフィルタリングする。

例えばユーザ認証を確認して、認証されていない場合であれば
アプリケーションのログイン画面にリダイレクトする。

認証されていればリクエストをアプリケーションへ進めることを許可する。

定義

ミドルウェアの作成はartisanコマンドを使用する

php artisan make:middleware Authenticate

すると、Authenticateクラスを含むファイルがapp/Http/Middlewareに配置される。

記述例

class Authenticate
{
    // リクエスト処理
    public function handle($request, Closure $next)
    {
        // トークンが一致しなければリダイレクト
        if ($request->input('token') !== 'my-secret-token') {
            return redirect('login');
        }

        // アプリケーションに進む
        // (ミドルウェアをパスする)
        return $next($request);
    }
}

ミドルウェアの登録

グローバル

アプリケーション全てのHTTPリクエストに対するミドルウェアは
app/Http/Kernel.php内の$middleware配列内に記述する。

class Kernel extends HttpKernel
{
    protected $middleware = [
        \App\Http\Middleware\HogeHoge::class
   ];
}

ルートに対する指定

特定のルートに配置するミドルウェアは
app/Http/Kernel.php内の$reouteMiddleware配列内に記述する。

class Kernel extends HttpKernel
{
    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class
    ];
}

ミドルウェアをKernel.phpで定義すると、middlewareメソッドを用いて
ルートに割り当てることができるようになる。

Route::get('/profile', function() {
    //
})->middleware('auth');

参考

Laravel 8.x ミドルウェア

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?