Laravel前缀表示受保护和未受保护的路由



我有两种类型的路由。

  1. guest和认证用户
  2. 仅适用于已认证的用户

仅对于经过身份验证的用户,我正在使用中间件,并且需要有路由前缀。我的代码是这样的

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');
});

如果我已经有一个中间件,我怎么能有一个路由前缀

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

您可以使用Route方法并按照您想要的方式组织它们,因为它们通常会返回自己。

在本例中,正如@Gert B.注释的那样,您可以这样做:

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

但是你也可以这样做:

Route::prefix('guests')->group(function () {
Route::get('/user_landing', [EngineController::class, 'user_landing'])->name('user_landing');
// more guest routes here
});
Route::prefix('admin')->middleware(['auth', 'role:user,admin'])->group(function () {
Route::get('/user_landing', [EngineController::class, 'user_landing'])->name('user_landing');
// more admin routes here
});

允许添加更多的路由。

但是,是的,有更多的方法来达到同样的目的。试着用更清晰的表达,这样你和其他人都能更好地理解。

最新更新