首页 > 其他分享 >Saas多租户数据权限设计(参考RuoYi)

Saas多租户数据权限设计(参考RuoYi)

时间:2024-10-22 23:11:26浏览次数:6  
标签:角色 租户 Saas RuoYi 用户 设计 权限 数据

导航

  • 引子
  • 场景梳理
  • 基于角色的访问控制(RBAC)
  • 多租户系统的权限设计
  • RuoYi系统的数据权限设计
  • 最终设计方案
  • 参考

本文首发《智客工坊-Saas多租户数据权限设计(参考RuoYi)》,共计3656字,阅读时长5min。

引子

最近公司打算把内部的系统打造成商业化的Saas产品,我们组承担了产品的研发任务。

理论上,这套系统在我们公司内部的业务中已经打磨了5年+,对于我们这个细分行业来说已经是非常成熟了,只需要稍加改造,适配多租户模式即可。

但是,真正落实到项目架构设计中,才发现有很多需要重新梳理和考虑的地方。

今天,主要是针对数据权限这块的设计和大家分享一下。

场景梳理

脱离场景的设计总是显得空洞。

在IM聊天场景中,有个很重要功能是,每个用户都要查看自己的会话(聊天记录)。

比如,

  • 普通咨询师可能就只能查看自己的聊天
  • 主管可以查看组员咨询师的聊天
  • CEO可以查看所有咨询师的聊天
  • ...

这样的需求在我们的系统中应该如何实现呢?

基于角色的访问控制(RBAC)

基于角色的访问控制(Role-based access control,简称 RBAC),指的是通过用户的角色(Role)授权其相关权限,这实现了更灵活的访问控制,相比直接授予用户权限,要更加简单、高效、可扩展。



当使用 RBAC 时,通过分析系统用户的实际情况,基于共同的职责和需求,授予他们不同角色。你可以授予给用户一个或多个角色,每个角色具有一个或多个权限,这种 用户-角色、角色-权限 间的关系,让我们可以不用再单独管理单个用户,用户从授予的角色里面继承所需的权限。

多租户系统的权限设计

一般来说,我们会将用户的权限分为菜单权限和数据权限。

菜单权限:控制用户能看到那些菜单或者按钮。
数据权限:控制用户能看到的数据范围。

在开始设计之前,我们可以看看用户登录+授权的过程,在用户返回的信息中就会包含角色(roleCodes)、菜单(permCodes)和数据权限(dataCodes)信息。



所以,角色(roleCodes)、菜单(permCodes)和数据权限(dataCodes)就是需要我们提前设计好的。

根据IM自身的业务,我们对角色的设计如下:

  • 咨询师(counselor_role)
  • 主管(manager_role)
  • 管理员(admin_role)

菜单权限:

  • 账号管理(zhanghaoguanli)
  • 公共设置(gonggongshezhi)
  • ...(根据实际情况定义)

令人头疼的其实是数据权限的设计,我们期望定义一种通用的数据权限。

所以,这里就不得不提到RuoYi系统

RuoYi系统的数据权限设计

在无意间,看到了一篇介绍RuoYi系统数据权限设计分析的文章- 《深入分析若依数据权限@datascope (注解+AOP+动态sql拼接) 【循序渐进,附分析过程】》

于是,笔者对这个开源系统进行了体验。(点此处直达)[https://demo.ruoyi.vip/index]

登录RuoYi系统后台,映入眼帘的是一堆的大家再熟悉不过的系统菜单。

  • 系统管理
    • 用户管理
    • 角色管理
    • 菜单管理
    • 部门管理
    • 岗位管理
    • 字典管理
    • ...

这里重点查看角色管理菜单,在列表的操作一栏,可以看到有个更多按钮,展开更多按钮,数据权限按钮暴露出来。


点击数据权限按钮,就可以看到数据权限配置窗口。


在这里可以看到数据权限分类如下:

  • 全部数据权限
  • 自定义数据权限
  • 本部门数据权限
  • 本部门及以下数据权限
  • 仅本人数据权限

可以看到这里的数据权限都是基于组织架构设计的。

需要指出的是,这里的自定义数据权限其实也是基于组织架构的选择,只是可以自由选择(比如适配跨部门场景)。

总体来讲,RuoYi系统数据权限的设计是中规中矩的,应该属于比较通用的设计。

这也是我们目前的商业化项目设计中值得借鉴的。

最终设计方案


或许还有更好的设计方案,欢迎大家提出更好的建议。

参考

标签:角色,租户,Saas,RuoYi,用户,设计,权限,数据
From: https://www.cnblogs.com/lucky_hu/p/18494138

相关文章

  • 【产品经理修炼之道】-SaaS创业路线图(九):怎样的竞争策略最聪明?
    其实研究一个新兴市场,经常会看到这样的情况:市场的繁荣依靠众多厂商共同的培育和耕耘。同领域的SaaS公司很容易陷入恶性竞争的局面中,这应该是中国独有的现象。我在2015年初拜访硅谷的SaaS公司时,美国SaaS创业者们说他们不会选择抢既有细分赛道,而是在别人的创意旁边另辟蹊径,也......
  • 一文搞懂SaaS应用架构:应用服务、应用结构、应用交互设计
    大家好,我是汤师爷~今天系统性地聊聊SaaS应用架构设计。应用架构概述我们已经完成了SaaS系统的定位分析,明确了系统的目标和核心能力。这为接下来的应用架构设计奠定了基础。应用架构就像整个SaaS系统的骨架,决定了系统的整体结构和各个组件之间的关系。接下来,我们会深入探讨应用......
  • ruoyi框架配置多数据源
      需求背景最近需要一个小demo,项目中需要同时连接sqlserver和mysql数据库。操作教程1、pom.xml--修改common/pom.xml<!--动态数据源--><dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <ve......
  • ruoyi框架动态切换数据库
       需求背景最近需要一个小demo,项目中需要同时连接sqlserver和mysql数据库。操作教程1、pom.xml--修改common/pom.xml<!--动态数据源--><dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <v......
  • SaaS架构:应用服务、应用结构设计
    大家好,我是汤师爷~应用架构设计通常包括以下步骤:根据业务架构,将业务需求转化为IT系统,识别核心应用服务。划分应用结构,设计应用结构与业务流程、数据之间的关系。设计应用结构之间的交互和集成关系。本文主要分享一下应用服务、应用结构设计设计。应用服务设计应用服务的......
  • nbsaas vue3管理后台框架
    nbsaasvue3管理后台框架一、项目概述NbsaasAdminVue是一个基于Vue.js3.0构建的轻量级后台管理系统,结合了现代前端技术栈的最佳实践,旨在帮助开发者快速构建具有高可扩展性和良好用户体验的后台管理系统。该项目拥有简洁的UI设计,强大的功能模块,支持多种自定义配置,......
  • SaaS架构:中央库存系统架构设计
    大家好,我是汤师爷~近年来,越来越多的零售企业大力发展全渠道业务。在销售额增长上,通过线上的小程序、直播、平台渠道等方式,拓展流量变现渠道。在会员增长方面,通过多样的互动方式,全渠道触达消费者,扩大会员规模。而全渠道的库存管理,逐渐变成零售商在渠道运营方面的核心活动,也是提高......
  • 基于SaaS的小区物业管理系统设计与实现--47357(免费领源码)可做计算机毕业设计JAVA、PHP
    摘 要本论文主要论述了如何使用SpringBoot开发一个基于SaaS的小区物业管理系统小程序,本系统将严格按照软件开发流程进行各个阶段的工作,面向对象编程思想进行项目开发。在引言中,作者将论述小区物业管理系统小程序的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程......
  • SaaS架构:开放平台架构设计
    大家好,我是汤师爷~今天聊聊开放平台架构设计。为什么需要搭建开放平台增强产品能力开放平台能够让三方开发者和合作伙伴开发新的应用或服务,增加原有SaaS产品能力。这样就可以满足更多用户需求,从而提高用户的满意度和黏性。促进创新三方开发者能够在SaaS标准产品的基础上,创造......
  • 一款Java CMS 网站管理系统,基于RuoYi-fast二次开发,网站后台采用SpringBoot + MyBati
    一款JavaCMS网站管理系统基于RuoYi-fast二次开发,网站后台采用SpringBoot+MyBatis文章目录前言一、开源地址二、环境要求三、功能亮点3.1扩展功能3.2内置功能四、安装方法4.1、拉取源码4.2、修改数据库链接配置4.3、创建数据库并导入数据4.4、配置资源上传......