跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 有没有关于数据查询权限控制的优雅实现方式
未分類
4 2 月 2021

有没有关于数据查询权限控制的优雅实现方式

有没有关于数据查询权限控制的优雅实现方式

資深大佬 : gonethen 5

  • 业务需求:
    • 总后台、平台、公司、员工所查询的数据各不相同,通过一种优雅的方式,一次性实现各种数据表的获取,而不是每个 sql 判断权限传递参数
    • 在业务量没有上来之前,暂时不考虑数据库分区分表之类的办法
  • 开发环境或技术框架:mysql+springcloud+mybatis(plus)
大佬有話說 (15)

  • 資深大佬 : imxthd

    参考开源框架

  • 主 資深大佬 : gonethen

    @imxthd #1 有什么关键字吗,毫无头绪啊

  • 資深大佬 : leesam1024

    我们是自己实现的。通过自定义注解+拦截器实现。
    权限角色分为
    基础业务角色(是否可以操作该业务功能。通过 controller 上的自定义注解+注解拦截器实现) 比如管理员、供货角色
    资源角色(定义该角色下面可以接触那些业务的更细分数据数据)

    用户必须先有基础业务角色后,才能操作该业务角色下面的资源

    基础业务角色是程序开发时就定义好,写死的。
    资源角色,可以通过管理员动态添加。

    1 个用户可以对应多个基础业务角色和资源角色

  • 資深大佬 : hxyCoding

    如果只是可视化查询,可以考虑后置屏蔽

  • 主 資深大佬 : gonethen

    @leesam1024 #3 我想我的问题表述的还是不够具体。其实我想问的重点在于上下级之间的数据权限控制。

    比如总后台能看到所有平台的订单;平台管理员只能看自己平台的订单;公司只能看自己公司的订单;员工只能看到自己发布的订单。

  • 資深大佬 : hsluoyz

    Casbin 支持多级 RBAC 模型和多租户模型,可以表达你所说的“比如总后台能看到所有平台的订单;平台管理员只能看自己平台的订单;公司只能看自己公司的订单;员工只能看到自己发布的订单。”

  • 資深大佬 : sakasaka

    尝试在业务表加入有关权限的标识

  • 資深大佬 : imxthd

    @gonethen bladex

  • 資深大佬 : liuxey

    即使“数据各不相同”,也要进行梳理分类,比如:全数据权限、总公司权限、分公司权限、部门权限、个人权限

    理清楚后就可以根据不同的数据权限做功能
    如果理不清楚,理都理不清楚!怎么优雅的了!

  • 資深大佬 : THESDZ

    我对优雅的理解:
    1.非侵入的:使用注解,配置,代理模式等
    2.无感的,即不破坏现有编程习惯
    具体的实现
    1.如果使用了通用 mapper 等,可以尝试改造通用 mapper 中代理的实现,如 select 等方法,可以增加额外的<if></if>等
    2.使用拦截器,对 sql 进行处理
    3.权限无非是参数的获取和使用,将其抽象为接口,具体的实现可以根据实际需求切换

  • 資深大佬 : THESDZ

    @gonethen 数据权限使用的数据中不包含逻辑
    1
    1.1
    1.1.1
    1.2
    如果是 1.1,则传入 1.1,1.1.1
    如果是 1,则传入 1,1.1,1.1.1,1.2

    全部的情况建议传入所有的,但是也可以特殊判断

    目的是,如果有权限应该是显示分配了权限才有

  • 資深大佬 : pigcandance

    添加字段 companyId 可以数据隔离

  • 資深大佬 : liuzhaowei55

    可以参看阿里云 dms 的审计功能,但应该做不到字段级别的审计,可以把设置字段加密

  • 資深大佬 : beichenhpy

    登录后把 username+部门放在 redis 中,每张表冗余 createBy,写个方法获取用户部门

  • 資深大佬 : tame619

    部门分层次,父部门能够查看子部门的信息。角色资源管理后台接口权限。部门管理接口得到的内容。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具