15 Laravel框架中的应用中间件

在上一篇中,我们探讨了中间件的定义和基本概念。现在,我们将重点关注“应用中间件”的生成与使用,以及它们在Laravel框架中的重要性。

什么是应用中间件?

在Laravel中,中间件提供了一种方便的机制,可以过滤进入应用程序的HTTP请求。应用中间件是你在应用中创建的自定义中间件,主要用于执行特定的操作,比如认证、日志记录、CORS控制等。

创建应用中间件

要创建一个新的应用中间件,我们可以使用Laravel的 Artisan 命令。以下是如何生成一个简单的应用中间件的步骤:

  1. 使用 Artisan 命令生成中间件

    在终端中运行以下命令:

    1
    php artisan make:middleware CheckAge

    这将在 app/Http/Middleware 目录下生成一个名为 CheckAge.php 的中间件文件。

  2. 编辑中间件

    打开生成的文件,并在 handle 方法中编写逻辑。以下是一个示例代码,它检查用户的年龄是否大于 18 岁:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php

    namespace App\Http\Middleware;

    use Closure;
    use Illuminate\Http\Request;

    class CheckAge
    {
    /**
    * 处理请求
    *
    * @param \Illuminate\Http\Request $request
    * @param \Closure $next
    * @param int $age
    * @return mixed
    */
    public function handle(Request $request, Closure $next, $age)
    {
    if ($request->age < $age) {
    return response('You are not old enough.', 403);
    }

    return $next($request);
    }
    }

    在这个例子中,中间件检查请求中的 age 参数。如果年龄小于指定值,返回一个403响应,拒绝访问。

注册中间件

生成应用中间件后,必须在 app/Http/Kernel.php 文件中注册它。你可以选择将其注册为全局中间件,路由中间件或组中间件。

在路由中间件中注册

Kernel.php 文件的 $routeMiddleware 数组中添加你的中间件。示例代码如下:

1
2
3
4
protected $routeMiddleware = [
// ...
'checkage' => \App\Http\Middleware\CheckAge::class,
];

现在,你可以在路由中使用这个中间件。

使用中间件

routes/web.php 文件中,你可以通过以下方式应用中间件:

1
2
3
Route::get('/restricted', function () {
return 'This is a restricted area.';
})->middleware('checkage:18');

在这里,我们定义了一个 /restricted 路由,如果用户访问这个路由并且年龄小于 18 岁,就会收到 “You are not old enough.” 的错误反馈。

怎么测试应用中间件?

为了测试中间件的功能,我们可以使用 Laravel 的集成测试。创建一个测试案例并对中间件进行测试:

1
php artisan make:test CheckAgeTest

然后在测试文件中编写类似下面的代码:

1
2
3
4
5
6
7
8
9
10
11
public function testUserIsNotOldEnough()
{
$response = $this->get('/restricted?age=17');
$response->assertStatus(403);
}

public function testUserIsOldEnough()
{
$response = $this->get('/restricted?age=18');
$response->assertStatus(200);
}

这段代码验证了当用户年龄小于18岁时是否返回403状态,而当年龄大于或等于18岁时是否返回200状态。

小结

在本节中,我们深入探讨了Laravel框架中的应用中间件,包括如何创建、注册和使用它们。应用中间件为我们的应用程序提供了强大的灵活性和可扩展性,能够进行请求过滤和控制。

在下一篇文章中,我们将讨论视图与模板引擎,具体关注Laravel自带的 Blade 模板引擎,并示范如何使用它来简化视图的开发。

15 Laravel框架中的应用中间件

https://zglg.work/laravel-zero/15/

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

复习上节

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论