请问用nodejs 做saas架构的web系统怎么做数据隔离
发布于 3 年前 作者 tuohuang 4828 次浏览 来自 问答

请问用nodejs 做saas架构的web系统怎么做数据隔离,typeorm是否有好的方案做租户数据隔离操作,或者有没有其他的好的实践方案。不想每个操作数据库的地方人工判断,想要一个可以自动拦截sql自动处理识别租户然后再和数据库交互的方法。

8 回复

一个租户一个数据库

可以一个租户分配一个子域名,通过子域名来隔离数据,但是仍然可以使用一个数据库,参见:多实例/多域名/多租户

@zhennann 我的意思是怎么在操作数据库上全局处理,现在时每个和数据库相关的操作都要根据域名来查找租户id太麻烦了,还容易漏,想通过一个方法在数据操作底层自动处理,不用每次操作都人工识别

@chenkai0520 这样数据库不好维护,我想要找一个方法,写业务代码的时候不用管哪个域名对应哪个租户,在操作数据库底层自动处理识别,不然每个操作业务代码的地方都要识别域名来操作租户太麻烦,有时候也容易忘,如果那个地方忘记做租户识别了将是灾难性的后果

@tuohuang CabloyJS提供了自动识别并处理当前域名/租户的机制 1、采用中间件机制,通过解析域名向ctx注入了不同的instance对象,通过ctx.instance.id来标识当前的租户,参见:多实例/多域名/多租户 2、通过ctx.model封装对租户Id的自动处理,对于常规的crud等操作,不必写租户id相关的代码,参见:CabloyJS: Model

@tuohuang 一般有两种方案:

  1. 通过权限系统,例如RBAC权限模式的,在进行操作数据库之前就进行了鉴权处理,后面操作数据库就模式是安全的; 2.重新实现ORM的增删改查等操作方法或者通过中间件的方式来处理你的租户ID
回到顶部