关于权限控制中的数据访问权限问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于权限控制中的数据访问权限问题相关的知识,希望对你有一定的参考价值。

在项目中会遇到这种情况:有些数据只允许一个人访问,有些数据允许部门内所有人员访问,有些数据允许所有登录人员访问;在以前我是把数据的访问范围直接写死,如果出现变动只能再增加新的功能;比如工资查询功能,需要提供一个可以查看全部工资(财务用)、查看部门内工资(部门领导用)和查看自己的工资(员工用);现在我想只提供一个功能,然后针对不同用户设置不同的数据访问权限;
要求: 数据权限的处理必须在架构层实现、不用Spring等框架技术、对于开发人员不用考虑数据权限问题,只需要写正常的SQL就可以;
希望 高手提供相应的方案;
QQ: 378272976 email:378272976@qq.com
谢谢!!

个人觉得提的问题范围有些大,如果只针对案例要解决这个问题很简单,只需要设置部门,个人的使用权限即可,权限都是叠加的,比如A员工只能查看A部门的工资,只需将A部门权限给a员工即可,部门隶属权限都具备了这都不是问题了.
如果是企业级系统涉及多模块及业务数据的权限控制的话,就需要设计独立的数据权限模块才能做到架构层面解决了,可对表级设置权限策略.
参考技术A 一般应该是分成角色和功能这两大块儿来着,
数据库设计的话,最基础的大致分四个表:角色表,角色分配表,功能表,权限表
角色表:存储角色(财务,部门,员工)
角色分配表:存储人和角色的关系,按人与角色的对应关系具体设计(比如A员工是财务科的科长,则有财务、部门双重角色。B员工是财务科员工,则财务、员工双重角色——当然,如果高级权限完全包含低级权限的话,则角色分配表可以和员工表整合在一起使用)
功能表:存储各个模块和模块的功能(工资的增删改查什么的,财务报表的增删改查什么的)
权限表:存储各角色和功能的对应关系(财务对工资表可以查看对财务报表可以查看和增加,而员工对工资表和财务报表都只能查看等等)
参考技术B 数据库设计的话,最基础的大致分四个表:角色表,角色分配表,功能表,权限表
角色表:存储角色(财务,部门,员工)
角色分配表:存储人和角色的关系,按人与角色的对应关系具体设计(比如A员工是财务科的科长,则有财务、部门双重角色。B员工是财务科员工,则财务、员工双重角色——当然,如果高级权限完全包含低级权限的话,则角色分配表可以和员工表整合在一起使用)
功能表:存储各个模块和模块的功能(工资的增删改查什么的,财务报表的增删改查什么的)
权限表:存储各角色和功能的对应关系(财务对工资表可以查看对财务报表可以查看和增加,而员工对工资表和财务报表都只能查看等等)
参考技术C 如果你的功能权限已经做好,那只要考虑怎样对数据进行分类去满足数据权限的配置,一般情况是将组织机构与业务数据建立联系,对人分配组织机构就分配了权限。 参考技术D 这应该是个设计问题。一般权限控制包括操作权限与对象访问权限。关于访问权限,一般将数据设定级别或分组,然后以级别或组作为一个基本单元来授权。

以上是关于关于权限控制中的数据访问权限问题的主要内容,如果未能解决你的问题,请参考以下文章

java中的四种访问权限是?

RBAC模型整合数据权限

SQL Server 2016 行级别权限控制

Sql Server数据库对象访问权限控制

关于Android6.0权限的学习

ORACLE数据库中的权限和角色