laravel中嵌套的复杂ACL

laravel中嵌套的复杂ACL,laravel,payment,acl,roles,Laravel,Payment,Acl,Roles,我在我的项目中使用Spatial/laravel权限作为ACL系统。很好。 我正在将付款/会计/发票添加到我的项目中,在这个级别中,用户工作时需要另一个ACL 例如,用户A将功能F1作为我们的服务。1个月前,他/她可以使用F1中的所有部分。在此之后,F1中的某些功能将受到限制,直到新发票由用户支付 因此,在我的控制器中,我在用户ACL级别使用authorizeForUser编辑方法。现在我应该在F模型中添加另一个ACL,如authorizeForF(F1->id)?! 另一个问题是,这是非常复杂

我在我的项目中使用Spatial/laravel权限作为ACL系统。很好。 我正在将付款/会计/发票添加到我的项目中,在这个级别中,用户工作时需要另一个ACL

例如,用户A将功能F1作为我们的服务。1个月前,他/她可以使用F1中的所有部分。在此之后,F1中的某些功能将受到限制,直到新发票由用户支付

因此,在我的控制器中,我在用户ACL级别使用authorizeForUser编辑方法。现在我应该在F模型中添加另一个ACL,如authorizeForF(F1->id)?! 另一个问题是,这是非常复杂的,如果我忘记加上这个,我错过了一些钱

我有一个解决方案:

在表中种子将所有Uri、方法(使用
Route::getRoutes()
上的
foreach
)保存为一个unic行,并为每个Uri、方法分配一个分数(默认为0)。在
路由middllware
中,分析每个请求uri并将其与分数进行比较。(例如uri为/profile/advance,管理员为此分配分数2)

如果uri得分超过零,用户的会计师将检查是否继续,或者在需要时重定向到付款

这使得网站管理员能够分配每个uri分数,开发者对此不承担任何责任

我只是担心乌里。因为管理员通常不会轻易地解除它们。所以,我需要另一个种子来为一些uri解释为标题


它好吗?

您是使用权限还是只使用直接角色?你能给我们看看密码吗?两个还是两个。对于管理员权限和其他模型角色,最好使用权限并将权限分配给特定的模型或角色。在这种情况下,您可以轻松删除权限,直到用户支付发票。我有一个主意。在route中间件中,为检查任何paymet计划的每个传递的uri定义一种情况,如果存在和用户没有足够的帐户重定向以出售页面,以及是否重定向到特定uri。在我看来,这样做更好,因为不需要记住代码中的每个位置并向其中添加新的acl。我的另一个问题是,如何避免在每个控制器所需的每个方法中重复使用几个acl(在几种情况下,每个模型都有几个acl:付款、新功能等)。我会在登录时检查它,如果用户登录到您的平台,您会检查用户是否有未付款。如果是这样的话,你就限制了用户可以使用的功能,这听起来太复杂了。充分利用这个软件包。在登录控制器中,根据需要运行任何检查并删除权限。然后重定向到用户仪表板,它应该只显示用户有权限的函数。所以,当新开发人员添加新方法时,请向网站管理员解释,他/她决定是否为其uri分配任何分数。