论坛首页 Java企业应用论坛

对权限管理认识的一些误区

浏览 42031 次
精华帖 (15) :: 良好帖 (8) :: 新手帖 (10) :: 隐藏帖 (2)
作者 正文
   发表时间:2009-04-03  
GonnaFlyNow 写道
yangyi 写道

3 实际上还是角色,概念混淆

有些权限需求确实超出了单纯的角色范围。
除了判断用户的角色,还需要加上其他的判断条件。这些条件可以针对
1.当前用户属性
2.要操作的业务数据属性
3.运行环境属性

比如我以前参与开发的一个项目,有这样的权限需求:
1.入职不满3个月的销售人员(角色)不允许修改客户资料。这里“3个月”就是对用户属性“入职时间”的限制
2.销售人员只能修改自己的客户资料。这里“自己的”就是对要操作的业务数据(客户资料)的“owner”属性的限制
3.股票交易员只能在“9:30-11:30”和“13:30-15:30”买卖股票。这里“9:30-11:30”和“13:30-15:30”就是对运行环境属性“时间”的限制

我想,上面这些例子每一个都应该算楼主说的细粒度权限判断,对于这类复杂的权限需求,光靠“用户-角色-权限”,不能直接实现,BRAC的粒度还是太粗。

我认为销售人员是岗位而不是角色,角色是一系列权限的集合,而岗位是属于基础数据的范畴,所以这里角色的定义是
角色:{
  修改用户资料:否,
  其他:可
}
置于角色到底需不需要分出层级,这个就是仁者见仁,淫者见淫的话题了
0 请登录后投票
   发表时间:2009-04-03  
metadmin 写道
GonnaFlyNow 写道
yangyi 写道

4-7 java的话spring security就可以实现

谈到实现,spring security确实可以实现,不过小弟认为spring security只提出了一个框架,要实现细粒度则需要实现voter接口,并且通过xml配置进来,还是比较复杂的。


如果能将权限和业务耦合解开,将分散在系统中各个权限逻辑集中起来管理。这是一种好的系统架构方式。
如果实现这种权限逻辑很复杂,在有些情况下,还不如自己手工编码呢!所以权限系统应该简单,而不是复杂。如果是复杂,就相当于用一种复杂方式替换了另一种复杂方式。


欢迎您进入权限管理圈子看看:
http://accessmanager.group.iteye.com/

并多留意本土产品Metadmin Access Manager。非常简单易操作的。。


首先您把问题考虑的这么全面,说明这个产品是下了功夫的,对于spring Security,可以通过简单的扩展+AOP简化配置,不过易用性上肯定要差一些,好在不是所有人都需要掌握
1 请登录后投票
   发表时间:2009-04-03  
jsecurity中permission和role还是有清晰的
0 请登录后投票
   发表时间:2009-04-03  
yangyi 写道

我认为销售人员是岗位而不是角色,角色是一系列权限的集合,而岗位是属于基础数据的范畴,所以这里角色的定义是
角色:{
  修改用户资料:否,
  其他:可
}
置于角色到底需不需要分出层级,这个就是仁者见仁,淫者见淫的话题了


完全同意,本质上销售人员是岗位而不是角色。不过大部分系统中岗位和角色概念重合的情况确实很多,因为最终用户已经习惯将岗位定义成角色了,为了让用户好理解,也只能迎合。呵呵
0 请登录后投票
   发表时间:2009-04-03  
感谢yangyi的肯定!

在易用性上,不是很好。这不是Spring Security才有这种情况,世界上充斥着很多复杂的东东。很多项目也是这样。当年,我在学徒的时候(哈哈,刚毕业的时候,有师傅带着做。呵呵,幸福)师傅给我灌输了很多知识。那个时候就是羡慕、崇拜。

后来,自己做了高级程序员。经理让我设计一个日志系统。天哪,我苦思冥想了1个多星期。搞了一个复杂的东东。经理没有看懂。将我的设计废了。然后把Log4j的链接给我。

天哪,那个时候,有种“被青春撞了一下腰”的感觉。这么简单,配置好了,就随便debug,info。想哪里用就哪里用。唯一需要注意的地方就是(打这种拼接日志,最好先做个判断):
if( logger.isDebugEnabled() ) {
  logger.debug( "some text" + obj.getSomeAttribute() + .. + ..;
}
1 请登录后投票
   发表时间:2009-04-03  

这个帖子有些跑题了:我们不是来探讨哪个技术好,哪个技术逊。

而是探讨 对权限认识的误区

 

我们都回到这个主题上来吧。

0 请登录后投票
   发表时间:2009-04-03  
要是不用acegi 我还真不知道怎么写复杂的权限呢
0 请登录后投票
   发表时间:2009-04-03  
metaadmin是不是美特软件.见过metacrm.安全很差.一个GUEST帐号就能得到整个系统的控制权.
0 请登录后投票
   发表时间:2009-04-03  
dfedora 写道
metaadmin是不是美特软件.见过metacrm.安全很差.一个GUEST帐号就能得到整个系统的控制权.

不是美特软件
0 请登录后投票
   发表时间:2009-04-03  
metadmin 写道
感谢yangyi的肯定!

在易用性上,不是很好。这不是Spring Security才有这种情况,世界上充斥着很多复杂的东东。很多项目也是这样。当年,我在学徒的时候(哈哈,刚毕业的时候,有师傅带着做。呵呵,幸福)师傅给我灌输了很多知识。那个时候就是羡慕、崇拜。

后来,自己做了高级程序员。经理让我设计一个日志系统。天哪,我苦思冥想了1个多星期。搞了一个复杂的东东。经理没有看懂。将我的设计废了。然后把Log4j的链接给我。

天哪,那个时候,有种“被青春撞了一下腰”的感觉。这么简单,配置好了,就随便debug,info。想哪里用就哪里用。唯一需要注意的地方就是(打这种拼接日志,最好先做个判断):
if( logger.isDebugEnabled() ) {
  logger.debug( "some text" + obj.getSomeAttribute() + .. + ..;
}


我比你好 哈哈 在前任的基础上把log4j封装了一把 满足华为的日子基线规范就ok了
现在用的蛮爽的

最近在考虑一个单点登录问题 用户A单点登录到I系统,但现在问题是A在I系统是没信息的,如何解决此问题 而我解决此问题的目的是达到对数据库中的记录做筛选 剔除非该用户的记录。
现在小组讨论的结果为随便哪个用户,只要是单点登录到I系统,则全部显示I系统中的数据记录,此方案明显是有局限,即在I系统角色中只有用户A一人存在情况下成立。

打算研究spring security !


0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics