为多个模型创建一个策略?

时间:2018-05-22 11:09:53

标签: php laravel

我使用Laravel权限包和权限来处理授权我遇到了问题:

我应该向用户添加权限,但我也应该检查该用户是否可以执行该操作,因此我想使用策略但问题是使用策略时我们应该为每个模型和逻辑添加策略我认为是一样的非常糟糕的主意。

现在我有多种选择:

1-制定政策,但将其用于多个模型,我不知道如何

2-创建自定义类并创建类似策略的内容

哪个选项更好?

2 个答案:

答案 0 :(得分:2)

1)you can bind multiple models to the same policy

protected $policies = [
    Model1::class => WildcardPolicy::class,
    Model2::class => WildcardPolicy::class,
    Model3::class => WildcardPolicy::class,
];

2)不清楚你的确切目标是什么

答案 1 :(得分:0)

你的问题非常好。我也没有解决同样的问题。我认为,你的问题没有用Policy方式解决。我认为,政策用于内容与作者所有者之间的隐私。

您可以使用基于操作/权限的方式来检查中间件层。

我推荐的解决方案方案如下;

您可以通过中间件检查已登录用户在user_roles表中的访问当前操作,或者获取所有访问操作列表并存储在已登录用户的会话中。

存储的数据可能类似于;

$user = ['accessible_resources' => [
   'product' => ['index','show'],
   'news'    => ['index','show','edit','store','create','update','destroy']
];

我希望我的解决方案对您有所帮助。

相关问题