Home >Backend Development >PHP Tutorial >How Laravel middleware works and how to use it
The working principle and usage skills of Laravel middleware
1. Introduction
In the Laravel framework, middleware is a very important function that can be used before the request reaches the application route or Then perform some functions. Middleware not only provides a concise and flexible way to handle requests, but can also be used to handle a series of operations such as authentication, permission control, and logging. This article will introduce the working principle and usage skills of Laravel middleware, and provide some sample code to illustrate.
2. How middleware works
In the Laravel framework, middleware is defined in the app/Http/Middleware
directory. You can create a new one through the command line or manually Middleware files. The core concept of middleware is a closure function, which accepts two parameters: a request object and a closure function, and returns a response object.
When an application receives an HTTP request, the request passes through the application's middleware layer. In the middleware layer, requests are processed one by one through the middleware in a defined order. Middleware can preprocess, authenticate, modify request parameters, record logs, etc. on the request, and then pass the request to the next middleware or route for processing.
If a middleware processes the request, it can choose to return a response object and send the response directly to the client, thus terminating the entire request-response process. Otherwise, the request will continue to pass down until it finds a middleware to handle the request or finally reaches a route.
3. Tips for using middleware
$middleware
property of the app/Http/Kernel.php
file, or through the $routeMiddleware
property. Register routing middleware. For example, we can register a middleware named CheckToken
as a global middleware: protected $middleware = [ AppHttpMiddlewareCheckToken::class, ];
$routeMiddleware
attribute. For example, we can define a route middleware named CheckRole
: protected $routeMiddleware = [ 'checkRole' => AppHttpMiddlewareCheckRole::class, ];
Then, use the middleware in the route definition:
Route::get('/admin', function () { // })->middleware('checkRole');
$middleware
attributes or route definitions, middleware with higher priority will be executed first. You can use the php artisan route:list
command to view the execution order of middleware. admin
middleware group for all background routes, you can do this: Route::group(['middleware' => 'admin'], function () { // });
In this way, all routes defined in this group will apply admin
middleware.
4. Sample code
In order to further understand and use middleware, the following is a simple sample code. Suppose we have an API interface that requires authentication, we can use middleware to handle the authentication and return an error response if the authentication is not passed.
php artisan make:middleware Authenticate
app/Http/Middleware/Authenticate.php
file, write the following Code: <?php namespace AppHttpMiddleware; use Closure; use IlluminateHttpRequest; class Authenticate { public function handle(Request $request, Closure $next) { $token = $request->header('Authorization'); if ($token != 'secret_token') { return response()->json(['error' => 'Unauthorized'], 401); } return $next($request); } }
$middleware
attribute of the app/Http/Kernel.php
file Add the following code: protected $middleware = [ AppHttpMiddlewareAuthenticate::class, ];
Route::get('/api', function () { // })->middleware('auth');
The above code will check the Authorization## in the request header. #Field and compared with
secret_token. If the verification passes, continue to the next middleware or route. Otherwise, return an error response in JSON format with status code 401.
The above is the detailed content of How Laravel middleware works and how to use it. For more information, please follow other related articles on the PHP Chinese website!