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.
php spark make:middleware TrustProxies
to generate
a new TrustProxiesMiddleware Class.