【问题标题】:apiResource with multiple role access具有多角色访问权限的 apiResource
【发布时间】:2019-06-01 06:38:16
【问题描述】:

我有两个角色,管理员(可以访问每个方法,如 post、put、delete)和只能访问 get 方法的用户。我创建了定义了所有方法的 api 资源控制器。我可以像这样使用它

Route::apiResource('measure', 'MeasureTypeController');

我有两个中间件组:

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

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

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

【问题讨论】:

  • 我认为有两种方法可以做到这一点。要么一一分解路由并将它们分组到您指定的中间件中,要么创建一个将在资源路由上运行的中间件并检查请求者是否有权访问该方法?
  • @Mozammil 如果没有简单的解决方案,我必须采用第一种方法。但目前我只在 apiResource 中读到了 mehtod。我想我可以像Route::apiResource('measure', 'MeasureTypeController')->only([ 'store', 'update', 'destroy' ]); 一样将它分开给管理员,只为用户获取。我还没试过……

标签: laravel routes roles


【解决方案1】:

你可以这样做,

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

【讨论】:

    猜你喜欢
    • 2020-09-13
    • 2019-05-03
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 2015-11-20
    • 1970-01-01
    • 2021-11-12
    • 2011-09-15
    相关资源
    最近更新 更多