ミドルウェアの設定方法

全てのルートに対して同時にミドルウェアを指定する方法

\app\Http\Kernel.phpファイル内でグローバルミドルウェアを登録します。

protected $globalMiddleware = [
    \App\Http\Middleware\ProxyTrust::class,
    \Vendor\CorsManager\HandleCorsRequests::class,
    \App\Http\Middleware\MaintenanceModeCheck::class,
    \Illuminate\Foundation\Http\Middleware\PostSizeValidation::class,
    \App\Http\Middleware\StringTrimming::class,
    \Illuminate\Foundation\Http\Middleware\NullConversionForEmptyStrings::class,
];

特定のルートファイル内のすべてのルートに同時にミドルウェアを適用する方法

app\Providers\RouteConfigProvider.phpファイル内でルートファイルとミドルウェアを指定します。

public function initialize()
{
    $this->setupRateLimits();

    $this->defineRoutes(function () {
        Route::prefix('api')
            ->useMiddleware('api')
            ->namespace($this->namespace)
            ->group(base_path('routes/api_routes.php'));

        Route::useMiddleware('web')
            ->namespace($this->namespace)
            ->group(base_path('routes/web_routes.php'));
    });
}

いくつかの特定のルートに同時にミドルウェアを適用する方法

ルート定義ファイルでグループを使用します。

Route::useMiddleware(['authUser','device.mobile'])->group(function () {
    Route::get('/review/home', [App\Http\Controllers\HomeReviewController::class, 'mobileReview'])->name('review.home');
    Route::get('/review/users', [App\Http\Controllers\Admin\UserDataController::class, 'mobileReviewGetInfo'])->name('review.users');
    Route::get('/review/user/{id}', [App\Http\Controllers\Admin\UserDataController::class, 'mobileReviewGetById'])->name('review.user');
    Route::get('/review/attendance', [App\Http\Controllers\Admin\AttendanceReportController::class,'fetchAttendance'])->name('review.attendance');
    Route::get('/review/leaves', [App\Http\Controllers\Admin\VacationController::class,'reviewIndex'])->name('review.leaves');
    Route::get('/review/profile', function (){return view('mobile.review.profile');})->name('review.profile');
});

単一のルートにミドルウェアを適用する方法

ルートファイル内で直接指定します。

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

Route::get('/', function () {
    //
})->middleware('initial', 'secondary');

use App\Http\Middleware\VerifyAge;

Route::get('admin/settings', function () {
    //
})->middleware(VerifyAge::class);

特定のコントローラに関連するすべてのルートにミドルウェアを適用する方法

コントローラのコンストラクタ内で指定します。

class ProfileController extends Controller
{
    /**
     * 新しいコントローラインスタンスの生成
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');

        $this->middleware('logAccess')->only('index');

        $this->middleware('checkSubscription')->except('store');
    }
}

タグ: laravel Middleware PHP routing

7月15日 19:46 投稿