数据权限篇

1. 如何实现数据权限(内核)

1.1 原理

在这里插入图片描述
面对复杂多变的需求,硬编码的可复用性差,需要非常大的开发和维护成本。

1.2 源码实现,mybatis如何重写sql

1.2.1 重写sql

在这里插入图片描述
方案二,本质上也是基于mybatis的插件机制。

1.2.2 解析sql

在这里插入图片描述

1.2.3 DataPermissionDatabaseInterceptor

在这里插入图片描述

1.3 源码实现:如何基于(数据规则)生成 WHERE 条件?

在这里插入图片描述

2.如何实现【部门级别】的数据权限

2.1 入门使用

在这里插入图片描述

2.2 源码实现:基于部门级别的数据规则?

在这里插入图片描述

2.3 分析源码和debug源码过程

  • 配置
    在这里插入图片描述
    在这里插入图片描述
    设置测试账号test的数据权限为:仅本部门。登陆之后,调用查询用户列表接口。

  • 直接在MybatisPlusInterceptor的intercept方法打断点。
    注意boundSql的where条件,没有dept_id。
    在这里插入图片描述
    在这里插入图片描述

  • 进入beforeQuery方法
    在这里插入图片描述
    没有配置,默认开启,返回全部rules。
    在这里插入图片描述

  • 传递rules
    在这里插入图片描述
    在这里插入图片描述

  • 进入parserSingle方法,进入processParser方法
    在这里插入图片描述
    在这里插入图片描述

  • 进入关键方法processPlainSelect方法
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 进入builderExpresssion方法
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 进入buildDeptExpression
    在这里插入图片描述

  • 返回builderExpression方法
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3. 如何实现【自定义】的数据权限

在这里插入图片描述

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
列级权限是指在数据库中对某个表的某个列进行权限控制,以保护敏感信息不被未授权的用户访问。下面是一列级权限需求分析的范例: 一、引言 本文档旨在对列级权限进行需求分析,以明确用户需求和业务流程,为系统开发提供指导和支持。 二、背景 现有的系统中对某些表的某些列进行了权限控制,但是无法满足用户的需求,因此需要开发一套全新的列级权限管理系统。 三、用户需求 1. 数据库管理员可以对某个数据库中的某个表的某个列进行授权或取消授权。 2. 数据库管理员可以查看某个数据库中的某个表的某个列的授权情况。 3. 用户在访问某个表的某个列时,系统会自动进行权限验证,只有授权的用户才能访问该列的数据。 4. 数据库管理员可以设置默认权限,当新用户加入时,系统会自动将其授权或取消授权。 四、业务流程 1. 数据库管理员授权流程:数据库管理员登录系统,选择某个数据库,选择某个表,选择某个列,设置授权或取消授权。 2. 数据库管理员查看授权情况流程:数据库管理员登录系统,选择某个数据库,选择某个表,查看某个列的授权情况。 3. 用户访问某个列流程:用户登录系统,访问某个表的某个列时,系统自动进行权限验证,只有授权的用户才能访问该列的数据。 4. 设置默认权限流程:数据库管理员登录系统,选择某个数据库,设置默认权限,当新用户加入时,系统会自动将其授权或取消授权。 五、非功能需求 1. 安全性:系统需要保证数据的安全性,避免敏感信息被未授权的用户访问。 2. 可靠性:系统需要保证稳定性和可靠性,避免出现系统崩溃或数据丢失等问题。 3. 响应速度:系统需要快速响应用户操作,避免用户等待时间过长。 4. 可维护性:系统需要方便维护和更新,避免出现过多的维护成本和时间。 六、开发环境 1. 开发语言:Java 2. 数据库:MySQL 3. 开发工具:Eclipse 4. Web框架:Spring 七、结论 本文档对列级权限进行了需求分析,明确了用户需求和业务流程,并提出了非功能需求和开发环境。这些分析结果将为系统开发提供指导和支持,使系统能够更好地满足用户需求和业务要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值