讨论数据权限,该如何处理
发布时间:2010-06-05 14:14:43 文章来源:www.iduyao.cn 采编人员:星星草
讨论数据权限
大多应用系统中会有如下需求:
1、普通员工可以对自己建立的业务对象有权限,而上级对所有下级建立的业务对象有权限;
2、员工A对区域A的业务对象有权限,员工B对区域B的业务对象有权限;
3、领导A可以看所有销售纪录,而大领导只关心金额超过1000K的销售纪录;
... ...
这些应该都属于数据权限的范畴,如何来抽象、设计和实现才能够尽可能灵活高效?
不讨论功能权限
Thanks
------解决方案--------------------
可以做一个层次树来管理员工之间的关系,这样可以在查询的时候判断一下是不是自己的领导
想看自己的所有的下属的记录也可以做到了
------解决方案--------------------
------解决方案--------------------
功能过滤相对简单,数据过滤很麻烦,需要根据身份(角色)过滤数据,难做
------解决方案--------------------
应该还是权限树之类的设计,但这树比较复杂的了,父权根有好几个子权限,子权限要有子权限,以此类推,个人想法.
------解决方案--------------------
长见识了。我们一般在业务逻辑中控制。
------解决方案--------------------
1、建立职位树,为每个员工设置一个上级关系,登录时获取当前用户的所有上级ID列表和所有下级ID列表。
在Users表中增加字段IDList,
如果ID=1 ParentID=0 IDList=,1, 说明 1没有上级
如果ID=2 ParentID=2 IDList=,1,2, 说明 2的上级是1
如果ID=4 ParentID=4 IDList=,1,2,4, 说明 4的上级是2,2的上级是1
如果ID=1登录时,通过IDList like '%,1,%'获取所有子ID。
2、通过配置设置,建立区域表、用户表、用户区域权限表(用户可以1对多个区域)。
3、a)领导A可以看所有销售纪录;
用户表中增加是否是数据管理员字段IsDataAdmin,为true则可以访问任何数据。建议增加一个所有数据查询页面,IsDataAdmin=true的用户就有权访问此页面,而不用从数据源上控制。
b)而大领导只关心金额超过1000K的销售纪录;
增加一个查询条件,金额大于1000K就可以,其中1000K数值做成可配置的。
------解决方案--------------------
lz可以了解一下基于角色管理的系统访问控制.通用抽象实体在那里边都有定义.Users-->Roles-->Permissions
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
2. 动态授权及权限控制(URL,业务方法,[b]领域对象). [/b]
领域对象= 数据字典 + AOP
经过几年的思索和不断的技术验证,算是攻克数据权限的难题。
可以在不牺牲性能的前提下支撑各种复杂数据结构的业务场景。
------解决方案--------------------
我做的用户权限一般通过在数据库中增加权限字段来实现
------解决方案--------------------
用户--组--角色--功能--功能中各种操作的控制
按位&运算可以简单的实现功能权限管理,这是一个很成熟的方法,限制就是根据机器的位数限制了功能个数,比如32位的机器有32个,增、删、改、查......,不过似乎这种功能很少
对于部门业务数据控制方面,涉及到数据的安全性,我这边曾经做个项目,方案和jinxfei说的类似,用组绑定
对于领导数据检索统计方面,属于一个综合的子系统:领导查询。这是一个很复杂的业务系统,给领导做决策支持用的,最好别和权限混到一起
------解决方案--------------------
参与抛砖、上述的:
“功能权,解决 谁 能够 做什么 的问题。
数据权,解决 谁 能够在什么 对象 上 做什么 的问题。 ”
——功能权是识别谁能够做什么,实际使用当中由于有角色这个集中点,使得对多个用户分配多项权限更方便。
但是楼主说的数据权范畴之中没有角色这么一个“集中点”,如果还是和功能权一样“解决 谁 能够在什么 对象 上 做什么”这样势必使得实现出来的系统使用上过于累赘,如果用户数量很多你可以想象必须对所有用户一个个分配数据权限、而且数据权限最基本也得分为对数据的增删改查四项,对一个数据对象一个用户至少得做四项配置...我认为应该把数据权限的定义改为:
数据权,标识 谁 不能在什么 对象 上 做什么 的问题
这样数据权限的内涵完全变了,要以功能权为主数据权为辅,数据权仅仅用于补充,也就是配置哪位用户不能对什么数据做什么操作。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
使用javaService将java Application程序注册成windows系统服务,程序中调用的文件路径问题
我写的application程序,原来是在linux下...
-
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]l??ռ?ߵ?????һ?? hstmt
取数据库tableName的字段的名字时出现上...
-
Java线程优先级抢占问题
java中,使线池中的一个当前运行的线程阻塞,运行优先级高的线程,待高优先级线程运行完毕后,再运行刚才被阻塞...
-
JAVA女实习生适合编程及未来发展?
我是大四的 我还有一个月就要去北京当java实习生了 对编程还是有些兴趣了 因为是本专业 而且我...
-
这个怎么运行不成?请哪位大侠帮一下,谢谢!
public class Employee{
private int id;
private String name;
private ...
-
请懂LOG4J的大虾进来看看
小弟最近在学log4j
现在只是知道怎么配置,什么是什么。
那到底这个东西怎么运用到一个项目中去呢
...
-
数据库问题java.sql.SQLException: Column not found,急!!!!
救命啊
我读不了数据库啊
各位大侠教教我~~
我的代码:
/...
-
关于java程序的一些问题
由于初学java,对于运行后的错误不理解,麻烦大家指教了,谢谢!
2011-9-18 14:05:48 org.apache.catalina...
-
求apache mina框架所需要的jar包
如题,哪位好心人能给我发一份一些相关jar包吧,小弟感激不尽。要是能够给我发些学习资料,就更好。
...
-
同一个类的不同实例,他们的方法是否共用一个内存空间
如题
听说一个类创建多个实例的时候,其变量是分别创建不同的内存空间来存储,...