GitHub

HTTP Middleware

Middleware provides a mechanism for filtering HTTP requests entering your application. Middleware can perform various tasks like authentication, CSRF protection, CORS headers, and more.

Defining Middleware

All middleware should be stored in the app/Http/Middlewares directory.

<?php
        
namespace App\Http\Middlewares;

use Spark\Http\Request;

class AuthMiddleware
{
    /**
    * Run the request filter.
    *
    * @param  \Spark\Http\Request  $request
    * @return mixed
    */
    public function handle(Request $request)
    {
        if (is_guest()) {
            return redirect('/login');
        }
    }
}

Registering Middleware

Register middleware in bootstrap/middlewares.php to make them available application-wide:

<?php
        
/**
* Middleware configuration.
*
* @return array
*   An associative array of middleware keys and class names.
*/
return [
    'auth' => \App\Http\Middlewares\AuthMiddleware::class,
    // ...
];

Assigning Middleware to Routes

Apply middleware to specific routes using the middleware key:

Route::get('admin/profile', [AdminController::class, 'profile'])
    ->middleware('auth');

Multiple middleware can be applied using an array:

Route::get('admin/profile', [AdminController::class, 'profile'])
    ->middleware(['auth', 'super']);

Middleware Groups

Apply middleware to a group of routes:

Route::group(['middleware' => ['auth']], function() {
    Route::get('dashboard', [DashboardController::class, 'index']);
    // More routes...
});

Tip: Middleware executes in the order they are listed in the array. Put more general middleware first and specific ones later.

Note: Use php spark make:middleware TrustProxies to generate a new TrustProxiesMiddleware Class.