在Laravel 5

时间:2015-04-30 10:15:42

标签: php laravel-5

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

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

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

我想要做的就是让他们担任用户的所有角色,但是例如,用户A只能查看第1页,无法上传文件或任何其他内容,用户B有权查看页面3和第4页,仅将文件上传到第3页,并将其他内容添加到第4页,除了上传文件。 我想你已经了解了。

这可以仅使用Entrust完成,还是应该在用户和权限之间创建一个新的数据透视表,并使用它来完成我需要的工作?

非常感谢您提前,

德拉戈什

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

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

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

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

当具有查看和上传文件权限的用户登录时,我希望:

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

因此他只能查看第1页并将文件上传到第1页。

1 个答案:

答案 0 :(得分:1)

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

说实话,你对权限表没用是完全正确的。如果有人正在从头开始构建网站,他将根据自己的需要定制系统。我真的很喜欢委托,委托没有这个功能的原因是因为直接向用户分配权限是一个糟糕的设计架构。权限表存在的唯一原因仅仅是因为应用程序很小。您拥有单个资源且所有角色实际使用相同资源的情况。在这些情况下,您只需检查权限,而不是检查每个用户。但是在实际的中型/大型应用程序中,每个角色都有单独的控制器。