`
liujiboy
  • 浏览: 13907 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

又遇到了让人痛恨的权限控制问题

阅读更多
网页上的权限控制,如果是基于用户角色的,有一万种有效的方法来解决。但是与应用相关的细粒度权限,却总是找不到合适的方式来解决。想把这种权限控制给分离出来吧,怎么分呢?曾经尝试了一下AOP的方法,但大多数这种权限控制都是和业务耦合很紧密的,很难分出来。这次的项目又面对这个问题,想了很久没有想出一个通用的解决方法,最后只好延续老路,在业务和页面里面验证权限。
有谁有好的方法吗?通用的,可配置的,能够将权限验证和业务方法分离的解决方案
PS:我说的细粒度访问权限控制指的是类似这种情况,当我修改我自己的博客文章时,应用系统必须验证我是不是“我所要修改文章”的作者
分享到:
评论
6 楼 liujiboy 2006-12-01  
问题的关键是数据权限如何设计?特别是需要动态调整数据权限的时候
5 楼 lysamer 2006-12-01  
也同意权限分控制权限和数据权限,目前我作的项目就这么作的,用自定义标签来生成 增加、编辑、删除、查询的按钮;
在查询的过程中再调用公共的类来判断他的查询数据范围;
4 楼 抛出异常的爱 2006-11-28  
写两条SQL语句
其中一条是由AOP注入的...(如果不可用就返回失败...)
另一条是现实的SQL...
3 楼 kimfly 2006-11-27  
Lucas Lee 写道
你需要将你所谓的细粒度权限分析清楚。
就我的经验而言,权限一般分为两类:
1.功能权限。
针对某个一功能,是否能访问。比如此用户是否能访问读取客户资料的功能。这个权限比较基础,不是yes就是no,所以有人又称Y/N权限。
2.数据权限。
在允许访问某一功能权限的基础上,控制可访问的数据范围。比如用户能访问读取客户资料的功能,但他只能访问本人录入的,或分配给本部门的客户资料。(楼主所指就是这种情况)

我自己开发了一个权限管理系统,对于功能权限,是可配置的,这一点跟JAAS在web.xml配置是类似的;对于数据权限,我采用可插入的SQL过滤条件来处理。(我以前所在的项目的经验证明,如果在读取出所有数据再一条条检查权限,性能会很差。)
可插入的SQL过滤条件?怎么实现的,通过sql拼装吗?
2 楼 LucasLee 2006-10-26  
你需要将你所谓的细粒度权限分析清楚。
就我的经验而言,权限一般分为两类:
1.功能权限。
针对某个一功能,是否能访问。比如此用户是否能访问读取客户资料的功能。这个权限比较基础,不是yes就是no,所以有人又称Y/N权限。
2.数据权限。
在允许访问某一功能权限的基础上,控制可访问的数据范围。比如用户能访问读取客户资料的功能,但他只能访问本人录入的,或分配给本部门的客户资料。(楼主所指就是这种情况)

我自己开发了一个权限管理系统,对于功能权限,是可配置的,这一点跟JAAS在web.xml配置是类似的;对于数据权限,我采用可插入的SQL过滤条件来处理。(我以前所在的项目的经验证明,如果在读取出所有数据再一条条检查权限,性能会很差。)
1 楼 wolfsquare 2006-10-26  
所谓的
引用
但大多数这种权限控制都是和业务耦合很紧密的,很难分出来。

其实是没有把什么是业务,什么是权限划分好.
拿你的例子来说,修改文章是业务,至于是谁可以修改,那是权限的问题.
只存在"谁""修改文章"的问题,不存在"我""修改文章的问题"
ACL,RBAC等的模型非常清晰,非常通用,如果你设计出来的权限模型和其有较大差别,那么你还需要继续苦读RBAC.

相关推荐

Global site tag (gtag.js) - Google Analytics