阅读(3220)
赞(9)
Laravel 8 定义中间件
2021-06-24 09:21:00 更新
您可以使用 make:middleware
来创建一个中间件:
php artisan make:middleware CheckAge
该命令会在 app/Http/Middleware
目录下放置新的 CheckAge
类。在这个中间件中,我们仅允许 age
参数大于 200 的请求对路由进行访问,否则将重定向到 home
页面:
<?php
namespace App\Http\Middleware;
use Closure;
class CheckAge
{
/**
* 处理传入的请求
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->age <= 200) {
return redirect('home');
}
return $next($request);
}
}
正如您所见,如果给定的 age
参数小于或等于 200
, 这个中间件将返回一个 HTTP 重定向给客户端;否则这个请求将会通过,进一步传递到应用层中。要让请求继续传到到应用层中 (即允许 「通过」中间件验证), 只需要将 $request
作为参数来调用函数 $next
即可。
最好将中间件想象成一系列层次,HTTP
请求必须通过它们才能进入你的应用层。每一层都会检查请求(是否符合中间件要求),而后决定通过或拒绝访问应用。
技巧:所有的中间件都是通过 服务容器 解析的,因此,你可以在你的中间件构造函数中键入你需要的任何依赖。