数据权限是基于角色还是用户?

Sam_Deep_Thinking
Java领域新星创作者
博客专家认证
2010-08-11 03:40:05
目前数据权限的大概需求如下:
 监督员默认只可以看见自己的数据,但经过授权后可以看到其他监督员的数据
 A部门部长默认只能看到A部门的数据,但经过授权后可以看到其他部门的数据
 分管领导只能看到分管部门的数据
 站长可以看到所有的数据


目前我的做法是基于用户的,使用ACL来做的。
就是会建立一张ACL表,记录数据授权情况。如:
acl表
----------------------------------------------
id userId principalId principalType
1 zhangsan zhangsan person
2 zhangsan lisi person
3 zhangsan dept1 department


上面的数据表示
zhangsan这个人可以看到自己、李四和dept1这个部门的数据。
然后提供一个授权界面,界面原型大概如下:

自己
用户----->弹出人员列表
部门----->弹出部门列表
所有

这样的话,系统管理员就可以勾选自己、某个人、某个部门的形式来给用户进行数据授权。授权的情况就
存放到ACL表中去。


我问的是:
第一、我上面的基于用户的做法可以做到吗?有什么致命缺陷没?
第二、数据权限一般来说是基于角色还是用户的。基于角色的有什么好处?
...全文
747 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
伞刀 2010-08-13
  • 打赏
  • 举报
回复
用户继承角色的权限,也可为用记另行设置权限
Sam_Deep_Thinking 2010-08-13
  • 打赏
  • 举报
回复
使用角色的话,如何实现我上面的需求呢?
要定义哪几种角色?
Xiaoloveliuforever 2010-08-11
  • 打赏
  • 举报
回复
角色 这还用怀疑啊
accessmanager88 2010-08-11
  • 打赏
  • 举报
回复
应该是基于策略,不应该是基于用户或者角色。

因为基于用户,那么设置起来就太复杂了,而且维护量大。
基于角色的话,对于有些系统能搞定,维护量也有那么大,代码里面也有很多判断工作。比如总公司人力资源经理,分公司人力资源经理(有的时候还要拆分为北京分公司人力资源经理、上海分公司人力资源经理.....)可见复杂度。


建议使用开源软件ralasafe, http://www.ralasafe.com/zh 国产的开源中间件,而不是框架,对你的应用和数据库都没有要求。在银行和电信都有应用案例。
sxb372435741 2010-08-11
  • 打赏
  • 举报
回复
应该是角色吧!因为用户也是角色嘛!
dr_lou 2010-08-11
  • 打赏
  • 举报
回复
权限->角色<-用户

应对两边修改时,大面积更新问题。
coolbamboo2008 2010-08-11
  • 打赏
  • 举报
回复
如果突然增加了100个同一个角色的用户,你要为他们设置权限的话……不觉得很累么
zheng_j_c 2010-08-11
  • 打赏
  • 举报
回复
大部分都是基于角色!
xutao_2008_2000 2010-08-11
  • 打赏
  • 举报
回复
当然要基于角色,这样可以无限扩展.你这样,业务稍有变动,你真个结构都得变

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧