【问题标题】:Laravel - multiple accounts with multiple users and separated dataLaravel - 具有多个用户和分离数据的多个帐户
【发布时间】:2018-09-27 21:34:18
【问题描述】:

我已经对此进行了大量阅读,但没有什么特别突出的。我已经有一个身份验证和授权系统,可以处理多个警卫和用户角色(用户、管理员、超级管理员等)

我正在尝试找出将系统分成完全独立的帐户的最佳方法,这些帐户具有以下内容;

没有登录部分

  • 登陆页面。任何人无需登录即可查看。

管理部分

  • 系统的管理员端有一个超级管理员,然后是多个管理员用户。
  • 这些用户可以查看每个在客户端拥有帐户的用户的所有数据。

客户部分

  • 每个用户帐户都有一个负责计费的所有者、他们自己的用户管理员等。
  • 每个客户帐户还拥有许多具有不同权限的用户(管理员用户、编辑用户等)。
  • 这一方的用户应该只能看到他们自己的帐户数据。他们应该永远看不到其他帐户数据。

在 Laravel 之前,我会有一个帐户表并为每个帐户分配一个唯一键。然后一个单独的用户表将包含用户及其帐户密钥。

从此以后的所有数据库表(帖子、产品、发货等)也将具有此密钥,以确保用户帐户只能看到自己的数据。

除此之外,还有权限表,用于精细控制每一方的每个用户可以看到的内容。

我原来的方式仍然适合 Laravel 还是有更好的方式?

【问题讨论】:

  • 我认为您的问题中必须涵盖许多概念,但是为了支持精细控制,我建议您检查 ABAC 方法。检查这个。 github.com/thekordy/auzo

标签: php laravel


【解决方案1】:

在同一代码库中将帐户分离到它们自己的“生态系统”中称为多租户。基本上,您可以根据用户 ID 和/或角色来确定应用程序查询的范围,这会将可用数据限制为任何给定用户。

看看Landlord Package

在一个非常基本的总结中,它的作用是为每个适用的查询添加一个where('tenant_id, auth()->id()) 子句。

您当然可以完全省略该子句以供超级管理员访问所有数据,或者应用更严格的约束,例如在该子句之外添加对用户角色的检查,进一步限制用户在其权限内可以访问的内容相应的帐户/组织/组等。

范围可以通过任何类型的关系来完成,您不必局限于经过身份验证的用户的 ID。如果您的应用程序有多个用户的组织,您可以使用组织 ID。

多个租户 ID 也是可能的,其中用户必须属于一个组织和该组织内的某个部门。

我之前使用的另一个包是Hyn's multi-tenant

【讨论】:

  • 谢谢。那是一个我以前从未听说过的新术语——一个快速的谷歌搜索,它打开了我正在寻找的那种信息的整个世界!我也会检查您的包裹建议。
【解决方案2】:

我们有与您提到的相同的项目。我们创建一个公司表并将其放在层次结构的顶部。

然后将所有表的新字段添加为 company_id 并通过 Policy 管理模型 -> https://laravel.com/docs/5.8/authorization

希望对你有帮助

【讨论】:

  • 您好,请详细说明如何编写策略等?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-17
  • 2015-06-28
  • 1970-01-01
  • 2019-05-03
  • 2014-11-09
  • 1970-01-01
相关资源
最近更新 更多