答案:在Laravel中创建自定义中间件需使用Artisan命令生成文件,在handle方法中编写过滤逻辑,如CheckAge中间件验证请求年龄;接着在Kernel.php的$routeMiddleware数组中注册并设置别名;然后在路由或控制器中通过middleware方法应用该中间件;支持参数传递时可在handle方法增加参数并在使用时传入具体值。

在 Laravel 中创建和注册自定义中间件非常简单,只需几个步骤即可完成。中间件可以用来过滤进入应用的 HTTP 请求,比如权限验证、日志记录、请求修改等。
使用 Artisan 命令行工具生成中间件:
php artisan make:middleware CheckAge
这个命令会在 app/Http/Middleware 目录下生成一个名为 CheckAge.php 的文件。
打开该文件,可以看到基本结构:
namespace App\Http\Middleware;
use Closure;
class CheckAge
{
public function handle($request, Closure $next)
{
if ($request->age <= 18) {
return redirect('home');
}
return $next($request);
}
}
你可以根据需要修改逻辑。例如上面的例子是检查请求中是否包含 age 参数且大于 18,否则跳转到首页。
中间件需要注册后才能使用,注册方式有三种:全局中间件、路由中间件、路由直接绑定。
(1)注册为路由中间件打开 app/Http/Kernel.php 文件,在 $routeMiddleware 数组中添加你的中间件:
protected $routeMiddleware = [
// 其他中间件...
'check.age' => \App\Http\Middleware\CheckAge::class,
];
这样就可以在路由中通过别名 check.age 使用它。
一款多用途的企业软件前端HTML模板。IT软件服务公司网站响应式单页模板。基于CSS、JS、HTML模块化原则创建的。如果您的站点不需要所有元素,那么可以轻松地删除不必要的组件。模板的代码干净,友好,注释良好。这使得编辑和自定义模板变得很容易。
350
如果你希望中间件对所有请求生效,可以将其类名加入 $middleware 数组:
protected $middleware = [
// 其他全局中间件...
\App\Http\Middleware\CheckAge::class,
];
一般不建议将业务相关的中间件设为全局,以免影响所有接口。
注册完成后,可以在路由中使用中间件:
Route::get('/profile', function () {
return view('profile');
})->middleware('check.age');
也可以用于控制器:
class ProfileController extends Controller
{
public function __construct()
{
$this->middleware('check.age');
}
}
中间件还支持接收参数,比如限制特定年龄段:
public function handle($request, Closure $next, $minAge)
{
if ($request->age < $minAge) {
return redirect('home');
}
return $next($request);
}
使用时传参:
middleware('check.age:21')基本上就这些。创建中间件用 Artisan 命令,注册到 Kernel,然后在路由或控制器中调用即可。逻辑写在 handle 方法里,灵活又方便。
以上就是Laravel怎么创建和注册自定义中间件的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号