我正在构建一个Web应用程序(使用Laravel,但这无关紧要),该应用程序将有多个租户,每个租户都有自己的数据库。后端和前端代码端是通用的。
我们都知道多租户使用每个租户专用的DB的好处,所以我不再赘述。就我而言,它100%适合我的需求。
如果租户(客户)来找我进行自定义(例如,附加功能,当前功能的更改,功能的删除等),我该如何执行此操作?显然,我无法更改所有租户的代码,因此我想我需要某种过滤或设置,以便可以在每个租户之间打开或关闭功能。
有什么想法吗?
谢谢。
答案 0 :(得分:3)
有多种方法可以实现多重延迟。
在这里,我想提出我以前在项目中实现的两种方法。
第一种方式:
tenant
表。在每个数据库表中添加tenant_id
列。header
部分中传递相应的租户ID。后端将从头获取租户ID。第二种方式:
tenant_name
和tenant_uuid
值创建租户表。URL
中发送租户名称,就像https://tenant1.xyz.com
一样。创建一个拦截器,该拦截器拦截前端请求并从URL中获取tenant name
。根据该租户名称,您可以从数据库中获取特定的租户信息。request context
中。 首先,您必须在所有建议的应用程序layer
中传递租户ID。但是第二种方式是,您可以从上下文获取租户ID,因此无需在所有层中传递它。
现在第二个问题的答案是:
用于特定租户的功能切换。您可以使用列feature_name
,is_enabled
和tenant_id
创建要素表。
现在,假设您必须向X
租户显示仪表板功能,并且不想向Y
租户显示它。然后,您只需要在此表中启用和禁用即可。