laravel - 在 laravel 中为每个 crud 操作定义权限的位置
问题描述
我用Laravel 6设计了一个商店,并使用laravel-permission 3进行用户管理。我想通过明确的权限来限制每个 crud 操作(例如添加产品、删除产品)。Spatie中有一个关于使用通配符权限的简短描述,但我不确定。我不知道定义这些限制的最佳位置在哪里。
这是一个用于创建和编辑产品及其中间件的路由示例(受权限限制)。
Route::get('/create','Controller@create')->name('create')->middleware('permission:add product');
Route::post('/store', 'Controller@store')->name('store')->middleware('permission:add product');
Route::get('/{product}/edit', 'Controller@edit')->name('edit')->middleware('permission:edit product');
Route::patch('/{product}/update', 'Controller@update')->name('update')->middleware('permission:edit product');
解决方案
我建议使用Laravel 的 Model Policies,您可以在下面的链接中找到更多信息。 https://docs.spatie.be/laravel-permission/v3/best-practices/using-policies/
此外,您可以在此演示应用程序中找到使用此 Laravel 权限包实现模型策略的示例: https ://github.com/drbyte/spatie-permissions-demo/blob/master/app/Policies/PostPolicy.php
推荐阅读
- excel - 彩色条形图;不确定我是否收集了正确的范围?
- angular - 如何从 Angular JS 应用程序调用 CefSharp.PostMessage()
- json - 在 JSON 突出显示中创建链接
- sql-server - 从 SQL Server 中的表循环数据
- encryption - 尝试使用 laravel-8 解密 postgres 数据
- lenses - 镜头工作室,试穿模板,布料变形
- android - 谷歌云平台上的 Android Key 的 Sha1 限制无法正常工作
- sql-server - 如何使用 T-SQL 在同一查询中对两个表使用内连接和左连接
- php - 使用 Laravel 在 json 列上创建索引
- ssh - 无法从 VM1 连接到 VM2