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

Laravel中带中间件的认证路由组如何添加路由前缀?

问题:为已配置中间件的路由组添加路由前缀

我有两类路由:

  • 访客与已认证用户均可访问;
  • 仅已认证用户可访问。

针对仅已认证用户的路由,我已使用['auth', 'role:user,admin']中间件,现需为其添加路由前缀。现有代码如下:

Route::prefix('guests')->group(function () {
    Route::get('/user_landing', [EngineController::class, 'user_landing'])->name('user_landing');
});

Route::middleware(['auth', 'role:user,admin'])->group(function () {
    Route::get('/user_landing', [EngineController::class, 'user_landing'])->name('user_landing');
});
解决方案

Laravel支持路由组方法的链式调用,直接在middleware()之后追加prefix()方法即可为整个认证路由组添加统一前缀。示例如下(这里以添加dashboard前缀为例):

Route::prefix('guests')->group(function () {
    Route::get('/user_landing', [EngineController::class, 'user_landing'])->name('guest.user_landing');
});

Route::middleware(['auth', 'role:user,admin'])
    ->prefix('dashboard') // 此处添加路由前缀
    ->group(function () {
        Route::get('/user_landing', [EngineController::class, 'user_landing'])->name('auth.user_landing');
    });

补充说明

  • 添加前缀后,该组内所有路由的访问路径都会带上前缀,比如上述认证路由的访问路径变为/dashboard/user_landing
  • 建议修改路由名称(如guest.user_landing和auth.user_landing),避免同名称路由出现覆盖冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:30:11