简介
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
。