具有多角色访问权限的 apiResource

apiResource with multiple role access

我有两个角色,admin(可以访问 post、put、delete 等所有方法)和 user,只能访问 get 方法。我创建了 api 资源控制器,其中定义了每个方法。我可以像

一样使用它
Route::apiResource('measure', 'MeasureTypeController');

我有两个中间件组:

//admin role routes
Route::middleware('role:admin')->group(function () {
   //...
});

//user role routes
Route::middleware('role:user')->group(function () {
   //...
});

管理员角色可以访问用户角色组中定义的路由。但用户无法访问管理员组中定义的路由。 我必须如何编写 api 资源路由以防止用户访问方法 delete put 和 post?

你可以这样做,

Route::group(['prefix' => 'admin',  'middleware' => 'role:admin'], function()
{
    Route::apiResource('measure', 'MeasureTypeController');
});

Route::group(['middleware' => 'role:user'], function()
{
    Route::apiResource('measure', 'MeasureTypeController')->except(['create','store', 'update', 'destroy' ]);
});