Laravel Http 请求的过滤器中间件

简介

Laravel5.5 中间件为过滤进入应用的 HTTP 请求提供了一套便利的机制。例如,Laravel 内置了一个中间件来验证用户是否经过认证(如登录),如果用户没有经过认证,中间件会将用户重定向到登录页面,而如果用户已经经过认证,中间件就会允许请求继续往前进入下一步操作。

当然,除了认证之外,中间件还可以被用来处理很多其它任务。比如:CORS 中间件可以用于为离开站点的响应添加合适的头(跨域);日志中间件可以记录所有进入站点的请求,从而方便我们构建系统日志系统。

Laravel 框架自带了一些中间件,包括认证、CSRF 保护中间件等等。所有的中间件都位于 app/Http/Middleware 目录下。

定义中间件

要创建一个新的中间件,可以通过 Artisan 命令 make:middleware

php artisan make:middleware CheckToken

这个命令会在 app/Http/Middleware 目录下创建一个新的中间件类 CheckToken,在这个中间件中,我们只允许提供的 token 等于指定值 laravelacademy.org 的请求访问路由,否则,我们将跳转到 Laravel 学院网站:

正如你所看到的,如果 token != 'laravelacademy.org',中间件会返回一个 HTTP 重定向到 Laravel 学院;否则,请求会被传递下去。将请求往下传递可以通过调用回调函数 $next 并传入当前 $request