php - Laravel 中 "Resource"路由的不同策略

标签 php laravel routes acl policies

我有一个系统,管理员可以在其中管理医生,而医生可以 self 管理。为此,我使用 Laravel Authorization使用策略。我为管理员注册了一个政策,它可以像这样访问医生:

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

但我需要的是一个单独的政策,仅适用于资源组中的一条路线,即 doctors.edit 这样医生就可以编辑自己的个人资料,如:can:edit-doctor, $doctor 一些东西。

是否有可能以正确的方式执行此操作,或者我必须制作手动路由并分配策略而不是使用资源路由???

最佳答案

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

你可以这样做:

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

关于php - Laravel 中 "Resource"路由的不同策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52626940/

相关文章:

php - 尽管经过多次尝试和在线搜索,$SESSION 仍无法正常工作

PHP 性能,从文件读取还是读取数据库?

php - 未找到基表或 View ?

python - GAE : Routes vs standard

php - 向 yahoo 和 hotmail 用户发送电子邮件?

php - Symfony 2/Doctrine - 始终可用的数据库连接?

php - 由于证书问题无法安装 Composer

php - laravel4 通过关系(一对多)从其他表中选择所有数据

asp.net-core - Razor Pages 中基于 URL 参数的路由

c# - MVC 如何防止通过名称调用 Action Method 而只允许通过路由调用它