我有两种类型的路由。
- guest和认证用户
- 仅适用于已认证的用户
仅对于经过身份验证的用户,我正在使用中间件,并且需要有路由前缀。我的代码是这样的
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
});
允许添加更多的路由。
但是,是的,有更多的方法来达到同样的目的。试着用更清晰的表达,这样你和其他人都能更好地理解。