我已经对此做了很多阅读,但没有什么突出的。我已经拥有一个可以处理多个警卫和用户角色的身份验证和授权系统(用户,管理员,超级管理员等)。
我试图找出将系统分成完全独立的帐户的最佳方法,这些帐户具有以下内容;
无登录栏
管理员部分
客户端部分
在Laravel之前,我会有一个帐户表并为每个帐户分配一个唯一的密钥。然后,单独的用户表将包含用户及其帐户密钥。
从此时起的所有数据库表(帖子,产品,货件等)也将具有此密钥,以确保用户帐户只能看到自己的数据。
除此之外,还有权限表,用于精确控制来自任何一方的每个用户可以看到的内容。
我原来的方式仍然适合Laravel还是有更好的方法?
答案 0 :(得分:3)
将帐户分成他们自己的生态系统"在同一代码库中称为多租户。基本上,您可以根据用户ID和/或角色来确定应用程序查询的范围,从而将可用数据限制为任何给定用户。
在一个非常基本的摘要中,它的作用是为每个适用的查询添加where('tenant_id, auth()->id())
子句。
当然,您可以完全省略该条款以供超级管理员访问所有数据,或者应用更严格的约束,例如通过添加对用户角色的检查以及该条款,进一步限制用户的内容可以访问各自的帐户/组织/组等。
范围界定可以通过任何类型的关系来完成,您不一定限于经过身份验证的用户ID。如果您的应用程序具有多个用户的组织,则可以使用组织ID。
多个租户ID也是可能的,其中用户必须属于该组织内的组织和某个部门。
我之前使用过的另一个软件包是Hyn's multi-tenant。
答案 1 :(得分:0)
我们有您提到的相同项目。我们创建一个公司表,并将其放在层次结构的顶部。
然后将所有表的新字段添加为company_id 并通过Policy-> https://laravel.com/docs/5.8/authorization
管理模型我希望有帮助