首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel Api多租户中的多租户

Laravel Api多租户中的多租户
EN

Stack Overflow用户
提问于 2020-08-07 21:04:00
回答 1查看 323关注 0票数 0

我正在测试laravel以替换我已有的应用程序。

我实现了多租户(https://tenancy.dev/docs/hyn/5.6),将数据库中的每个租户和通过子域访问的每个租户分开。

这解决了我的部分问题。因为我可以将数据库中的每个业务组分开。但是,在同一个业务组中,可以有多个业务单元。我将以mc donalds为例,这将是业务组,每个商店将是单位。为了解决这个问题,我想创建一个新的租户机制,这一次,在数据库中使用tenant_id分隔。

在这种情况下,我想从最有经验的人那里知道这是不是一个正确的方法?

出现的另一个问题是,同一业务组中存在访问多个业务单元的用户。在这种情况下,如何在不为每个业务单位重新注册的情况下允许此访问?

我希望我已经清楚地解释了这个问题。如果你需要更多的信息,请告诉我。

任何帮助都是非常欢迎的。

提前感谢所有读过这篇文章的人。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-15 20:26:28

对于这个问题,您必须引入租户层次结构的概念,例如

代码语言:javascript
复制
McDonald (Main Tenant)
    McDonald Seattle
    McDonald Oregon
    McDonald Newyork

通过这种方式,您可以让父租户包含所有业务用户,然后将访问权限分配给相应的子租户。如果您有一个用户在多个租户中工作,那么允许用户设置租户上下文,登录到根租户。这有助于您识别上下文租户并相应地加载数据。

在许多用例中,子租户可以拥有自己的用户。这也可能伴随着这样的问题:我能否将用户从子租户提升为父租户,就像可以管理连锁餐厅的区域经理一样。

在登录时,您可以检查用户是否有单个租户(在层次结构的父级/租户中)的登录,在这种情况下,您可以允许直接登录,否则会提示租户上下文设置页面将其路由到相应的租户。

对于ACL,我们可能必须按租户分配角色和权限(通过tenantId列就足够了),这有助于用户在一个子租户(McDonald Seattle)中扮演经理角色,在(McDonald Newyork)租户中扮演推销员角色。

例如,我可以使用以下模型。这将在选择租户时设置,从那时起,我将能够使用权限/角色从该上下文进行验证,这样就不会有更多的db调用等。这可以在UI和REST API层中完成(在REST API层,我们验证用户身份的地方可以设置它,并让API、服务、BusinessRules层使用它作为事实来源,而不是访问数据库)

代码语言:javascript
复制
class UserContext {
    String userName,
    Guid Id,
    Guid TenantId,
    Roles[] TenantRoles,
    String[] Permissions
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63302465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档