Home > PHP Framework > Laravel > How to write middleware in laravel to implement middleware jump

How to write middleware in laravel to implement middleware jump

PHPz
Release: 2023-04-03 18:58:11
Original
703 people have browsed it

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>
Copy after login

For example:

php artisan make:middleware EnsureUserIsAdmin
Copy after login

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);
    }
}
Copy after login

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' => [
        // ...
    ],
];
Copy after login

Step 2: In the $middlewareGroups array above, specify a group for your new middleware as follows:

'admin' => [
    \App\Http\Middleware\EnsureUserIsAdmin::class,
],
Copy after login

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');
Copy after login

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!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template