gpt4 book ai didi

php - 在 Laravel 5 中使用 Entrust 将权限分配给用户,而不是角色

转载 作者:可可西里 更新时间:2023-10-31 23:39:43 25 4
gpt4 key购买 nike

我正在使用 Laravel 5 开发应用程序,我想使用 Zizaco/Entrust 为用户分配角色和权限。为了更好地理解,让我举个例子:

我的数据库中有 4 个角色: guest 、用户、管理员、所有者。所有者在管理面板和主站点上具有完全访问权限,管理员在管理面板上具有有限访问权限,在主站点上具有完全访问权限,用户在主站点上应具有自定义访问权限,而访客根本没有访问权限(卡住在主页上,直到他们被赋予用户角色)。

我面临的问题是对用户的自定义访问。有 4 个主要页面,用户应该请求对其中一个或多个的权限。在主页上,他们可以上传文件,也可以做一些其他的事情。

我想做的是给他们所有的用户角色,但是例如,用户 A 有权限只能查看第 1 页,无法上传文件或任何其他内容,用户 B 有权限查看页面3和Page 4,只上传文件到Page 3,除了上传文件,其他的都到Page 4。我想你明白了。

这只能通过 Entrust 来完成,还是我应该在 Users 和 Permissions 之间创建一个新的数据透视表并使用它来完成我需要的?

非常感谢您,

编辑:我之前想的是给他们多个角色,例如“viewer-to-page-one”、“uploader-to-page-one”、“viewer-to-page-2”等等,然后是权限表在我的数据库中将完全没用。

总而言之,我想要完成的是当对第 1 页和第 2 页具有只读权限的用户登录时,我希望 session 中有以下数据:

['id'->1,'name'->'user's name','email'->'users's email','role'->'user','permissions'->['view-page-1','view-page-2']]

因此他只能查看第 1 页和第 2 页,而不能上传文件或其他任何内容。

当一个对第 1 页具有查看和上传文件权限的用户登录时,我想要:

['id'->2,'name'->'user's name','email'->'users's email','role'->'user','permissions'->['view-page-1','upload-to-page-1']]

所以他只能查看第1页并上传文件到第1页。

最佳答案

回答这个问题可能有点晚,但这仅适用于到达此页面的其他人。

老实说,您关于权限表无用的看法是完全正确的。如果有人从头开始构建站点,他会根据自己的需要定制系统。我真的很喜欢 entrust 并且 entrust 没有这个功能的原因是因为直接向用户分配权限是一个糟糕的设计架构。权限表存在的唯一原因只是因为小应用程序。您只有一个资源,并且所有角色实际上都在使用相同资源的情况。在这些情况下,您可以简单地检查权限,而不是检查每个用户。但在实际的中型/大型应用程序中,每个角色都有单独的 Controller 。

关于php - 在 Laravel 5 中使用 Entrust 将权限分配给用户,而不是角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29965050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com