In Laravel, middleware is a very practical and important feature that handles the processing between the request entering the application and the response being returned to the client. During these processes, you may need to perform operations on the user, such as checking the user's permissions or authenticating the user. If the user fails your check, you may need to redirect the user to a different page. This article will introduce how to write middleware in Laravel to implement middleware jump.
1. Create middleware
Step 1: Open the terminal and use Laravel’s Artisan command to create middleware:
php artisan make:middleware <middleware-name>
For example:
php artisan make:middleware EnsureUserIsAdmin
Steps 2: Create a new middleware named EnsureUserIsAdmin in the app/Http/Middleware directory. This middleware will check if the current user is already logged in and the user has administrator rights.
namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class EnsureUserIsAdmin { public function handle(Request $request, Closure $next){ if (!auth()->check() || !auth()->user()->is_admin) { return redirect('home'); } return $next($request); } }
In the above code, we first use the auth() function to check whether the current user is logged in. If the user is not logged in, this middleware will redirect to the homepage. If the user is already logged in, check if the user has administrator rights. If the user does not have admin rights, the middleware will redirect to the homepage. Otherwise, the middleware will allow the request to proceed.
2. Using middleware
Step 1: In the app/Http/Kernel.php file, find the $middlewareGroups array. This array contains the middleware groups that must be passed through the application.
protected $middlewareGroups = [ 'web' => [ // ... ], 'api' => [ // ... ], ];
Step 2: In the $middlewareGroups array above, specify a group for your new middleware as follows:
'admin' => [ \App\Http\Middleware\EnsureUserIsAdmin::class, ],
In the above code, we are using admin as the middleware The name of the group, and the name of the middleware we created in step 1: EnsureUserIsAdmin.
Step 3: Now that we have created the middleware itself and specified where to use it, we now need to use the middleware in our router. Open the routes/web.php file and specify that the route uses the admin middleware group, as shown below:
Route::get('admin/users', 'Admin\UserController@index')->middleware('admin');
In the above route definition, we use the middleware group name admin to protect access to Admin\UserController@ index page.
3. Test the middleware
Finally, start your development server and test your new middleware. Visit the page on your application admin control panel, if you don't have admin rights you should be redirected to the homepage.
Please note that this article demonstrates how to create middleware to implement middleware jump in Laravel 5.7 version, it may be slightly different for other versions.
Summary
Middleware is a very useful function in the Laravel framework, which can easily operate on users and implement middleware jumps. In this article, we covered how to create and use middleware, and how to use them to protect specific pages or resources. For developers who want to strengthen the security of their applications, middleware is an excellent tool to achieve this goal.
The above is the detailed content of How to write middleware in laravel to implement middleware jump. For more information, please follow other related articles on the PHP Chinese website!