15 Laravel框架中的应用中间件
在上一篇中,我们探讨了中间件的定义和基本概念。现在,我们将重点关注“应用中间件”的生成与使用,以及它们在Laravel框架中的重要性。
什么是应用中间件?
在Laravel中,中间件提供了一种方便的机制,可以过滤进入应用程序的HTTP请求。应用中间件是你在应用中创建的自定义中间件,主要用于执行特定的操作,比如认证、日志记录、CORS控制等。
创建应用中间件
要创建一个新的应用中间件,我们可以使用Laravel的 Artisan 命令。以下是如何生成一个简单的应用中间件的步骤:
使用 Artisan 命令生成中间件
在终端中运行以下命令:
1
php artisan make:middleware CheckAge
这将在
app/Http/Middleware
目录下生成一个名为CheckAge.php
的中间件文件。编辑中间件
打开生成的文件,并在
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
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 | protected $routeMiddleware = [ |
现在,你可以在路由中使用这个中间件。
使用中间件
在 routes/web.php
文件中,你可以通过以下方式应用中间件:
1 | Route::get('/restricted', function () { |
在这里,我们定义了一个 /restricted
路由,如果用户访问这个路由并且年龄小于 18 岁,就会收到 “You are not old enough.” 的错误反馈。
怎么测试应用中间件?
为了测试中间件的功能,我们可以使用 Laravel 的集成测试。创建一个测试案例并对中间件进行测试:
1 | php artisan make:test CheckAgeTest |
然后在测试文件中编写类似下面的代码:
1 | public function testUserIsNotOldEnough() |
这段代码验证了当用户年龄小于18岁时是否返回403状态,而当年龄大于或等于18岁时是否返回200状态。
小结
在本节中,我们深入探讨了Laravel框架中的应用中间件,包括如何创建、注册和使用它们。应用中间件为我们的应用程序提供了强大的灵活性和可扩展性,能够进行请求过滤和控制。
在下一篇文章中,我们将讨论视图与模板引擎,具体关注Laravel自带的 Blade
模板引擎,并示范如何使用它来简化视图的开发。
15 Laravel框架中的应用中间件