在命名权限方面,我应该遵循一些命名准则吗?现在,我发现的所有内容都与“添加Foo”,“编辑Foo”,“删除Foo”,“添加FooBar”,“编辑FooBar”,“删除FooBar”等类似,依此类推。 / p>
请记住,没有分组(这是很可惜的),并且当您拥有所有所述权限的管理屏幕时,上述方法似乎很草率。
您所有的“添加项”都在一起,“编辑”项都在一起,依此类推。 例如:
- Add Foo
- Add FooBar
- Add FooBarBez
- Edit Foo
- Edit FooBar
- Edit FooBarBez
- Delete Foo
- Delete FooBar
- Delete FooBarBez
现在,我倾向于按照路线名称的样子进行操作,例如:
- foo.add
- foo.edit
- foo.delete
- foobar.add
- foobar.edit
- foobar.delete
- foobarbez.add
- foobarbez.edit
- foobarbez.delete
在将所有“父”权限保持在一起(即:所有Foo在一起,所有FooBar在一起等)方面,它更有条理。当然,如果有实际的指导方针,请告诉我或者您是否还有其他宝贵的意见/建议?
//编辑清晰度更新
具体地说,
- __Are__ any naming conventions?
- Are there any preferences in terms of use of singular/plural when it comes to parents (eg: "User Create", "Users Create")
- If parents and action should be separated with a space, a dot, something else? (eg: "users.create"; "users create"; "users->create")
- What about nested resources (Parent.Child)? eg: "users.banking_details.create"
- Captilisation? Lowercase? Camel Case?
如前所述,倾向于以laravel命名的路线为准则,因此是:复数,小写字母,由点分隔,包括完整路径(父子关系)。仅仅因为那是我所追求的,但这并不意味着它是对的,因此我要求社区提供意见:)
答案 0 :(得分:1)
我会使用the same names that Laravel uses when authorizing resources:
view
create
update
delete
您可以在此处了解更多信息:Gate and authorization improvements in Laravel。
答案 1 :(得分:1)
在文档中,他们列出了一个样本播种机,并提供了其他示例。 https://github.com/spatie/laravel-permission
'edit articles'
'delete articles'
'publish articles'
'unpublish articles'
我认为这不是一个很好的约定,所以我最终在PostController中做到了这一点:
function __construct()
{
$this->middleware('auth', ['except' => ['index', 'show']]);
$this->middleware(['permission:post create'], ['only' => ['create', 'store']]);
$this->middleware(['permission:post edit'], ['only' => ['edit', 'update']]);
$this->middleware(['permission:post delete'], ['only' => ['delete']]);
}
我每次必须使用$ this,因为看来您不能链接中间件。
答案 2 :(得分:1)
有任何命名约定吗?
我不知道。正如您所指出的,这些示例使用“创建帖子”等,这是一种可怕的处理方式。
<块引用>当涉及到父母时,在单数/复数使用方面是否有任何偏好(例如:“用户创建”、“用户创建”)
这真的取决于您的使用情况。下面是一个在不同情况下使用单数和复数的例子。
返回单个用户的路由可以受 user.read
保护,返回多个用户的路由可以受 users.read
保护。我认为最好的方法是使用对您和/或您的团队有意义的东西。
如果父母和动作应该用空格、点或其他东西分开? (例如:“users.create”;“users create”;“users->create”)
点是首选方法,尤其是当您要使用通配符时。
<块引用>嵌套资源(Parent.Child)呢?例如:“users.banking_details.create”
完全可以使用,但是,在涉及通配符权限时要小心。 wildcard 权限将授予使用 ALL 子权限的权限。
如果您向某人授予 users
或 users.*
权限(它们被视为相同),则他们将能够在此父项下执行所有权限。
字幕化?小写?骆驼套?
选择一致的风格并坚持下去。
我个人使用 Web 操作常用的命名约定 (CRUD)。
task.create
task.read
task.update
task.delete
答案 3 :(得分:0)
不用foo或其他东西,只需使用