【问题标题】:Laravel - Laravel Spatie - Resource Particular Permission [Alternative - Solution]Laravel - Laravel Spatie - 资源特定权限 [替代 - 解决方案]
【发布时间】:2026-01-05 20:30:02
【问题描述】:

我正在开发一款可让您创建群组的应用(让我们保持简单)。我正在使用 Laravel 6,并且我已经获得了身份验证和授权。

现在,我想将管理或成员角色分配给用户,仅分配给特定组。示例:

  • 用户 A 是组 A 的管理员。(可以将其他用户指定为管理员)
  • 用户A只是组B的成员。(只能看到组信息)
  • 用户 A 是组 C 的管理员。(可以指定其他用户为管理员)

我已经尝试过 Spatie,但它只能作为一般的 porpouses 工作。 有没有办法可以调整这个,任何想法,文章。我也在阅读 Spatie - 政策

所提供的任何帮助都会受到好评。

【问题讨论】:

  • Spatie 的 laravel-permission 包似乎不允许您轻松添加与特定模型实例相关的权限。您可以尝试使用Bouncer 包,它允许您执行类似Bouncer::allow($user)->to('edit', $post); 的操作,从而限制对某个模型实例的访问。
  • 谢谢德莱娜。我会试试那个包,我会发布一个可能的答案和解决方案。

标签: laravel laravel-permission


【解决方案1】:

感谢@delena-malan 的评论和解决方案。我有可能实现这个目标。

好的,我所做的是:

  1. 当然要安装包并设置它
  2. 您可以在控制器或播种机中配置角色和权限(如您所愿 - 对我来说完全没有冲突)
  3. 获取模型 #1 和 #2 的实例(我的案例用户和组)
  4. 为组中的用户定义能力
  5. 检查用户是否对定义的组有一项能力
  6. 准备就绪

例如:。

Bouncer::allow($user)->to('assign-admin', $group);
$boolean = $user->can('assign-admin', $group);

【讨论】: