千家信息网

如何创建laravelHTTP中间件

发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,本篇文章为大家展示了如何创建laravel HTTP中间件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。中间件其实就是在路由上面加了一层过滤或是一层保护,前缀
千家信息网最后更新 2025年01月22日如何创建laravelHTTP中间件

本篇文章为大家展示了如何创建laravel HTTP中间件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

中间件其实就是在路由上面加了一层过滤或是一层保护,前缀和命名空间都是作为group的数组参数传进去的,中间件也是作为group的数组参数传进去

一、中间件书写

添加中间件前

Route::group(['prefix' => 'admin','namespace'=>'Admin'], function () {Rount::get('login','IndexController@login');Rount::get('index','IndexController@index');});

添加web中间件后

Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>['web']], function () {Rount::get('login','IndexController@login');Rount::get('index','IndexController@index');});

web中间件可以用session功能,启用CSRF保护

Route::get('/',function(){session(['key'=>123]);return view('welcome');});

再设置一个路由,用来输出session

Route::get('/test',function(){echo session('key');return 'test';});

但因为不在一个中间件里,所以取不出session的值

下面我们设置一下把路由放到一个分组的中间件

Route::group(['middleware'=>['web']], function () {Route::get('/',function(){session(['key'=>123]);return view('welcome');});Route::get('/test',function(){echo session('key');return 'test';});});

系统默认的web中间件,中间件在Kernel.php中

使用web中间件时,才会使用session

二、自己手动在Kernel.php文件中定义一个后台管理云登录的中间件

定义前:

protected $routeMiddleware = [        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,    ];

定义后:

protected $routeMiddleware = [        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'admin.login' => \App\Http\Middleware\AdminLogin::class,    ];

在cmd窗口切换到项目目录可以用命令创建中间件

php artisan make:middleware AdminLogin

然后在Middleware文件夹查看AdminLogin.php文件

然后调用刚才创建的中间件

Route::group(['middleware'=>['web','admin.login'],], function () {Route::get('/',function(){session(['key'=>123]);return view('welcome');});Route::get('/test',function(){echo session('key');return 'test';});});

三、后台超级管理员的验证

Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>'web'], function () {Rount::get('login','IndexController@login');//登录不需要后台管理员的超级认证});Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>'admin.login'], function () {Rount::get('index','IndexController@index');//超级管理员需要认证后才能进入欢迎页面和编辑页面Rount::resource('article','ArticleController');});

任何一个用户都可以登录,但是如果登录了成功,就进入欢迎页面,没有登录成功就在登录页面,因为登录的信息存到session里,所以我们利用session的信息判断是否登录

模拟登录是将登录信息写到session里面,然后找到Admin包下IndexController控制器

1]); //登录信息用admin存储     return '

登录

' }}

我们在中间件里输出session测试一下

然后在Middleware文件夹查看AdminLogin.php文件

验证:

我们先登录一下,然后访问欢迎页面,如果输出1,表示我们设置成功了(登录时把1存到session里,然后进入欢迎页面,欢迎页面会调用中间件的AdminLogin.php,),

我们继续设置

Middleware文件夹的AdminLogin.php文件

上述内容就是如何创建laravel HTTP中间件,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

0