最常用且清晰的方式是用Route::middleware()链式调用包裹闭包分组,支持同时配置prefix、namespace、name等属性,中间件顺序即执行顺序,带参中间件需单独声明,验证需通过php artisan route:list检查Middlewares列。

直接用 Route::middleware() 包裹一组路由,是最常用也最清晰的方式。
基础写法:用 middleware() 包裹闭包
在 routes/web.php 或 routes/api.php 中,把需要统一加中间件的路由放进一个闭包里,并用 Route::middleware([...]) 套住:
Route::middleware(['auth', 'verified'])->group(function () { ... });- 闭包内所有路由(
get、post、resource等)都会自动应用这两个中间件 - 多个中间件写成数组,顺序即执行顺序;单个中间件可省略方括号,如
['auth']可简写为'auth'
搭配前缀、命名空间和路由名前缀
可以链式调用多个配置方法,一次性设置完整属性:
-
->prefix('admin'):所有子路由路径自动加/admin前缀 -
->namespace('Admin'):控制器类自动定位到App\Http\Controllers\Admin\* -
->name('admin.'):所有子路由名自动加admin.前缀,比如route('admin.dashboard') - 注意:这些方法必须连在
Route::middleware(...)后面,且不能拆开调用(例如不能先->middleware()再单独->prefix())
用中间件组(middleware group)简化配置
如果某套中间件组合反复使用(比如后台权限控制),建议在内核中定义中间件组:
- 打开
app/Http/Kernel.php,在$middlewareGroups数组中添加新组,例如: 'admin' => [ \App\Http\Middleware\CheckAdmin::class, \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class ]- 注册后,在路由文件中直接使用:
Route::middleware('admin')->group(function () { ... }); - 中间件组只支持无参中间件;带参的(如
throttle:60,1)必须在路由级单独写
验证是否生效
运行命令查看实际绑定效果:
php artisan route:list- 检查目标路由行的 Middlewares 列是否显示你预期的中间件或组名
- 若没出现,常见原因是:中间件组未在
Kernel.php注册、写法用了已弃用的数组式Route::group(['middleware' => ...])、或漏掉了->group()闭包











