中间件提供了一种方便的机制来检查和过滤进入应用程序的 HTTP 请求。
在项目的 app/Http/Middleware 目录下可以看到 Laravel 预定义好的中间件,我们通过 php artisan make:middleware 创建的中间件也会存放到该目录下。
查看 app/Http/Kernel.php 文件:
1 | class Kernel extends HttpKernel |
查看 app/Providers/RouteServiceProvider.php 文件:
1 | public function boot() |
开头说了中间件用来检查和过滤进入应用程序的 HTTP 请求,比如我们我禁止黑名单 IP 地址访问,就可以通过中间件来实现:
1 | php artisan make:middleware BlacklistIpDenyMiddleware |
1 |
|
这里应用在 web 路由中:
1 | protected $middlewareGroups = [ |
还可以更细粒度的使用中间件,比如应用系统除开登录、注册等请求,其他的请求要求用户必须登录:
1 | <!--comment0--> |
还有更细粒度的角色权限控制:
1 | <!--comment1--> |
还可以在控制器的 __construct 方法中使用中间件:
1 | class HomeController extends Controller |