You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8如何将多个路由分组使用公共auth中间件 无需逐一声明

现有实现说明

你当前逐个给路由附加auth中间件的写法逻辑完全正确,可正常运行,仅存在路由数量增长后重复代码多、维护成本高的问题。

统一配置公共中间件的优化方案

最常用且灵活的方案是路由分组配置,你可以把所有需要登录权限的路由都放到同一个auth中间件分组下,分组内的所有路由会自动继承中间件配置,同时你还可以把重复的id正则校验也统一放到分组配置中:

// 需登录访问的路由统一放到该分组内
Route::middleware('auth')->where(['id' => '[0-9]+'])->group(function () {
    Route::get('/', [PagesController::class,'index']);
    Route::get('edit/{id}', [PagesController::class,'editPage']);
    Route::post('edit/{id}', [PagesController::class,'editItem']);
    Route::get('delete/{id}', [PagesController::class,'deletePage']);
    Route::post('delete/{id}', [PagesController::class,'deleteItem']);
    // 后续新增同规则路由直接写在该分组内即可,无需重复配置中间件和正则校验
});

// 登录、注册等鉴权相关路由不要放在上述分组中,避免未登录用户无法访问登录页导致重定向死循环
require __DIR__.'/auth.php';

如果你的站点是完全封闭的内部系统,仅登录、注册等极少数页面不需要登录权限,也可以直接在app/Providers/RouteServiceProvider.php中给整个web路由组默认添加auth中间件,再给鉴权相关路由单独跳过该中间件即可,不过该方案灵活度较低,非特殊场景不推荐使用。

内容的提问来源于stack exchange,提问作者Dump

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:24:02