01 基于SAAS架构通过双租户实现单位和项目细粒度数据隔离
1 需求
- 项目部署到云上,供多家单位不同部门人员使用。如图Ⅰ
- 不同单位有不同项目,在每个项目中会邀请不同单位不同部门人员进行协同办公。如图Ⅱ
图Ⅰ 多单位多用户
图Ⅱ 多项目多人员
2 思考
- 多家单位数据如何隔离?
- 多个项目数据如何隔离?
- 同一项目人员如何协同办公?
- 同一用户参加不同项目,在各项目中权限不一样如何解决?
- 同单位人员在不同项目中的数据如何共享?
3 解决方案
3.1 双框架
本案例基于Jeesite4.X专业版。
- 搭建两个Jeesite项目WEB端, U-WEB和P-WEB;
- U-WEB以单位为租户做数据隔离;
- P-WEB以项目为租户做数据隔离;
3.2 团队管理
- 项目创建时,同步在P-WEB中创建项目租户;
- 各单位人员通过邀请码或链接等方式加入项目;
- 加入后的人员成为P-WEB的用户;
- 加入后的人员除租户字段为项目租户字段外,其它信息与U-WEB中的用户信息相同,并增加扩展字段关联U-WEB用户建立关系;
- U-WEB项目更新时同步更新P-WEB租户;
- U-WEB人员更新时同步更新P-WEB用户;
这样,U-WEB和P-WEB两个项目根据不同的需求,授予不同人员不同的功能权限和数据权限。单位与单位之间,项目与项目之间,互不影响,以项目为租户的框架下人员也可以通过流程流转进行协同办公。
如何确保数据同步一定成功呢?类似平台提现到银行,如何确保用户只需要操作一次,确保提现一定到账。
请阅读 02 通过线程池同步数据确保用户请求只会发送一次。
如何实现一处登录,两个框架不同项目之间共享回话呢?
请阅读03 整合CAS实现一处登陆多处共享会话
框架前后端分离,如何确保是同一回话呢?
请阅读04 Jeesite4.x 登录后重定向到自定义请求,前后端分离时确保是同一会话