我是Multi-Tenant架构的新手,使用django-tenant-schema
开发SaaS产品我的要求就像客户注册产品一样。对于每个注册的客户端,我都是通过遵循单个数据库和隔离模式方法来创建新模式。每当客户端从浏览器请求时,我都能够通过使用子域并授予访问其特定模式的权限来识别它们。当我开始编码时,很多问题都出现在我脑海中。我真的很抱歉在这里问,但stackoverflow只是我最后的希望。数据库如下所示
Q1。我们可以对每个客户执行哪种管理操作?
我有休息api例如 http://client.example.com/api/user_list/ 此处客户端可能是ClientA或ClientB
Q2。我们如何实现api路由,当用户在浏览器上请求时动态获取客户端名称,让我们使用相应的模式来显示当前客户端的user_list。
任何回复都可能有所帮助。提前谢谢。
答案 0 :(得分:3)
我遵循了django-tenants
,他们的团队几乎实现了django多租户SassS应用程序所需的一切。因此,除了了解体系结构之外,我还没有做太多工作。我只想回答这个问题。
首先从admin及其特权开始;对于上述要求,我有两个管理员角色: tenants_admin , tenant_admin 。
在这里, tenants_admin (服务产品的人)能够管理 tenants (购买产品的个体公司); tenants_admin 可以操纵租户的数据,它们位于公共架构的表中。
现在进入 tenant_admin ,该用户对租户用户(例如,单个公司的员工)的数据具有特权。
现在从django-tenants
克隆项目,为租户创建应用程序。这些租户模式彼此之间非常隔离,包括应用程序名称和租户应用程序的rest_framework
。然后照常实施REST API;这些API将使用我们为项目创建的中间件自动导航。