【问题标题】:Different Policies for "Resource" routes in LaravelLaravel 中“资源”路由的不同策略
【发布时间】:2019-03-08 16:16:42
【问题描述】:

我有一个系统,管理员可以管理医生,而医生可以管理自己。为此,我使用 Laravel Authorization 使用策略。我为管理员注册了一项政策,它可以访问以下医生:

Route::resource('doctors', 'DoctorsController')->middleware('can:access-doctors, App\Doctor');

但我需要一个单独的策略,仅针对资源组中的一条路径,即doctors.edit,以便医生可以编辑自己的个人资料,例如:can:edit-doctor, $doctor

是否有可能以适当的方式做到这一点,或者我必须手动路由并分配策略而不是使用资源路由???

【问题讨论】:

    标签: php laravel routes acl policies


    【解决方案1】:

    如果我没记错的话,您将需要一个不同的端点来为每个路由指定特定的中间件。

    你可以这样做:

    Route::get('doctors/{doctor}/edit', 'DoctorsController@edit')
        ->middleware('can:edit-doctor', 'App\Doctor'));
    
    Route::put('doctors/{doctor}', 'DoctorsController@update')
        ->middleware('can:edit-doctor', 'App\Doctor'));
    
    Route::resource('doctors', 'DoctorsController')
        ->except(['edit', 'update'])
        ->middleware('can:access-doctors, App\Doctor'));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-23
      • 2015-01-11
      • 2016-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多