使用通用中间件对 Laravel 8 路由进行分组
Group Laravel 8 routes with common middleware
我想问一下在laravel 8中如何使用身份验证是否正确?
我想制作只对登录用户可见的网站。
我的解决方案在这里。但我想知道我是否会有更多路线,有什么方法可以用一个命令完成,而不需要为每条路线添加吗?
Route::get('/', [PagesController::class,'index'])
->middleware('auth');
Route::get('edit/{id}', [PagesController::class,'editPage'])
->middleware('auth')
->where('id', '[0-9]+');
Route::post('edit/{id}', [PagesController::class,'editItem'])
->middleware('auth')
->where('id', '[0-9]+');
Route::get('delete/{id}', [PagesController::class,'deletePage'])
->middleware('auth')
->where('id', '[0-9]+');
Route::post('delete/{id}', [PagesController::class,'deleteItem'])
->middleware('auth')
->where('id', '[0-9]+');
require __DIR__.'/auth.php';
谢谢
您可以使用路由组,Laravel的文档在这里; https://laravel.com/docs/8.x/routing#route-group-middleware
您的示例可以更新为:
Route::middleware(['auth'])->group(function () {
Route::get('/', [PagesController::class,'index']);
Route::get('edit/{id}', [PagesController::class,'editPage'])
->where('id', '[0-9]+');
Route::post('edit/{id}', [PagesController::class,'editItem']);
->where('id', '[0-9]+');
Route::get('delete/{id}', [PagesController::class,'deletePage'])
->where('id', '[0-9]+');
Route::post('delete/{id}', [PagesController::class,'deleteItem'])
->where('id', '[0-9]+');
});
您可以更进一步,使用 Global Constraints 在全球范围内将 id
定义为 [0-9]+
,而不是每条路线。
在App\Providers\RouteServiceProvider定义
public function boot()
{
Route::pattern('id', '[0-9]+');
}
一旦定义了模式,它就会自动应用到所有使用该参数名称的路由:
Route::get('/user/{id}', function ($id) {
// Only executed if {id} is numeric...
});
你可以用中间件创建路由组('auth')
Route::middleware(['auth'])->group(function () {
//all of your routes
}
我想问一下在laravel 8中如何使用身份验证是否正确?
我想制作只对登录用户可见的网站。
我的解决方案在这里。但我想知道我是否会有更多路线,有什么方法可以用一个命令完成,而不需要为每条路线添加吗?
Route::get('/', [PagesController::class,'index'])
->middleware('auth');
Route::get('edit/{id}', [PagesController::class,'editPage'])
->middleware('auth')
->where('id', '[0-9]+');
Route::post('edit/{id}', [PagesController::class,'editItem'])
->middleware('auth')
->where('id', '[0-9]+');
Route::get('delete/{id}', [PagesController::class,'deletePage'])
->middleware('auth')
->where('id', '[0-9]+');
Route::post('delete/{id}', [PagesController::class,'deleteItem'])
->middleware('auth')
->where('id', '[0-9]+');
require __DIR__.'/auth.php';
谢谢
您可以使用路由组,Laravel的文档在这里; https://laravel.com/docs/8.x/routing#route-group-middleware
您的示例可以更新为:
Route::middleware(['auth'])->group(function () {
Route::get('/', [PagesController::class,'index']);
Route::get('edit/{id}', [PagesController::class,'editPage'])
->where('id', '[0-9]+');
Route::post('edit/{id}', [PagesController::class,'editItem']);
->where('id', '[0-9]+');
Route::get('delete/{id}', [PagesController::class,'deletePage'])
->where('id', '[0-9]+');
Route::post('delete/{id}', [PagesController::class,'deleteItem'])
->where('id', '[0-9]+');
});
您可以更进一步,使用 Global Constraints 在全球范围内将 id
定义为 [0-9]+
,而不是每条路线。
在App\Providers\RouteServiceProvider定义
public function boot()
{
Route::pattern('id', '[0-9]+');
}
一旦定义了模式,它就会自动应用到所有使用该参数名称的路由:
Route::get('/user/{id}', function ($id) {
// Only executed if {id} is numeric...
});
你可以用中间件创建路由组('auth')
Route::middleware(['auth'])->group(function () {
//all of your routes
}