0
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?

Laravel middleware

Posted at

middlewareとは

ユーザーからのリクエストがコントローラーに届く前後の間に別の処理を入れることができる機能

middlewareの種類

グローバルミドルウェア

 全てのリクエストに処理を行うミドルウェア
 Kernel に表記することで使用することができる。

ルートミドルウェア

特定のルートのみ対して適応するミドルウェア

web.php

Route::get('/signin',[MainController::class,'signin'])
    ->middleware(TestMiddleware::class)->name('signin');

コントローラーで設定する場合、
Kernel.phpの$middlewareAliasesの欄のエリアルを記入することで
そのエリアルを使用することができる。

Kernel.php

    protected $middlewareAliases = [
        'test' => \App\Http\Middleware\Test\TestMiddleware::class
    ];
web.php
    Route::get('/signin',[MainController::class,'signin'])
    ->middleware('test')->name('signin');

コントローラーのコンストラクタに書いても使用することができる。
そうすることでコントローラー全体に処理を行うことができる。
また only , exceptを使用することで処理の有無を選択できる。

controller.php
    public function __construct(){
        $this->middleware('auth')->only(['index']); // `index` のみ適用
        $this->middleware('auth')->except(['show']); // `show` 以外に適用
    }

ミドルウェアグループ

複数のミドルウェアのまとめて、ルートに割り当てることができる。

web,apiにmiddlewareを登録することで処理が行われる。

Kernel.php
  protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\Middleware\TestMiddleware::class
    ],

    'api' => [
        
    ],
];      
web.php
    Route::middleware(['web'])->group(function(){
        Route::get('/signin',[MainController::class,'signin'])->name('signin');
        Route::post('/signgin',[MainController::class,'signin_post'])->name('signin.post');
    });

0
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
0
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?