posts - 193,  comments - 520,  trackbacks - 0
 
昨天对现有系统已实现的功能大概的描述了一下,其实里面我觉得最重要的是对客户可能存在的权限需求的分类。这两天也在写关于权限的文档,这里想到了对权限的第六种分类,其实之所以这样分类也是由于具体实现的差异所造成的。

六是数据范围操作权限,其实这个是可以和数据范围权限合为一个的。具体的区别在与对已经划分范围的数据再增加操作的权限控制。还是以财务管理为例,部门经理只能查看金额小于1W的数据;而总经理则没有限制,可以查看所有数据。但是请注意:他们只能对这些数据拥有查看的权限,不能修改或是删除,而财务则拥有修改的权限。在一些情况下可以用模块操作权限和数据范围权限的叠加来满足对该权限的需求,但是在权限复杂的情况下,这个权限独立出来是必须的。

事实上现有系统就是模块操作权限和数据范围权限的叠加来满足这部分需求的。

posted @ 2007-03-20 11:04 ronghao 阅读(2225) | 评论 (3)编辑 收藏
很早就完成了权限系统的编码,这里把一些功能说明贴出来,也希望提提意见。

权限系统基于acegi框架实现了从前端页面到后台数据全面的控制。在权限控制中,它将权限分成五类:  
 
一是系统权限,主要是对模块为单位的权限划分,具体就是用户对该模块可见不可见,能不能对该模块进行再授权的操作。表现在用户界面就是用户登录系统主页面后,可以看到的顶部菜单和左侧outlookbar菜单的内容控制。作为粒度最大的权限控制,系统实现了web url的防盗链功能。举例来说,用户新开发的一个叫车辆管理的模块,配置在http://localhost/business/carmanage.actionurl下,当对这个模块的权限加以控制后,直接在浏览器中键入http://localhost/business/carmanage.action同样是无法访问的,而不仅仅是界面内容的屏蔽。
 
二是模块操作权限,在对整个模块的权限做出控制后,这里继续对模块的浏览、增加,修改,删除的操作权限做出控制,也可以理解为对象权限 。还是以车辆管理为例,不同的人员对这个模块的操作是不同的,有些用户可以新增,删除车辆;而有些用户则只是可以对车辆的情况查看不能修改。通过系统提供的一套web 标签,页面可以根据用户不同的操作权限屏蔽相应的功能按键。例如删除,新增按键。用户绕过页面直接操作相应业务方法同样也做到了严格的控制,没有权限的访问会被拒绝同时记入日志。 
 
三是数据范围权限,又可以叫做对象实例级权限。事实上不是每个用户都可以看到所有记录的。以财务管理为例,部门经理只能查看金额小于1W的数据;而总经理则没有限制。权限系统对这部分权限也做出了全面的控制,可以根据数据类型,相应字段数值范围做出控制。
 
四是单条数据ACL权限,为了满足更严格的数据权限要求,权限系统对数据实现了单条数据的ACL权限,具体说就是对每条数据都实现了权限控制,每条数据都有一到多条权限数据与其对应。以个人通讯录为例,每个用户都维护自己的一个通讯录,这些数据都只是对本人可见,其他人不可见。但用户可以对这些数据做出授权,将某条联系方式以授权的方式共享给其他人,并赋予不同的权限,包括拥有,修改,删除,浏览四种权限。

五是数据字段权限,通过xml配置,系统保证了用户的最小粒度的权限控制。每条业务数据权限可以精确控制到每一个字段。包括单个字段的可否浏览以及可否修改。保证了敏感信息的安全性。


授权,作为权限系统的重要部分,系统提供了相当方便的操作体验。以树状的方式展现权限主体(用户,角色,部门)以及资源,方便,直接,一目了然。区别与传统的RBAC模型,权限不仅仅可以分配给角色,也可以分配给部门和用户。实际的权限是这三者权限的叠加,最大限度的方便用户操作。考虑到用户的扩展,系统提供两个权限继承规则接口,用户可以自定义权限继承的规则。例如,部门A下有部门A1,部门A的权限是否由部门A1继承。

整个权限系统的数据都建立在系统统一的缓存管理之上,用户登录后,其权限信息即被缓存,保证系统的效率
posted @ 2007-03-18 22:46 ronghao 阅读(4930) | 评论 (5)编辑 收藏
用hibernate做持久层工具,建立User对象,映射到sqlserver的USER表,但在做查询的时候不断的报sql错误,打印hibernate产生的sql语句到sqlserver查询工具执行,报同样的错误。给表名加上[]后sql可以正常执行。例如:select * from USER错误。select * from [USER]正确。开始以为是什么地方配置的问题。因为以前用过达梦数据库,它默认也是必须给表名加[]的,可以通过设置数据库属性解决这个问题。但也没有发现什么配置。后来在SecuritySite群提问,illusion提示是与系统表重名,更改表名后果然正常。于是感到很奇怪:USER这么常用的表名怎么会与系统表重名呢?
posted @ 2007-03-11 11:29 ronghao 阅读(1750) | 评论 (4)编辑 收藏
1.昨天开始在程序里增加和服务器端交互的部分。看看代码
var url = 'http://localhost:8080/app/get_data';
        var pars 
= '';
        
        var myAjax 
= new Ajax.Request(
            url, 
            {
                method: 
'get'
                parameters: pars, 
                onComplete: showResponse
            });
很简单的一段程序,在firefox里始终不能工作,但在ie下一切正常。打开debugger,跟踪调试到这一行
this.transport.open(this.options.method, this.url, 
        
this.options.asynchronous);

在这一行执行出现问题,干掉prototype,自己写XMLHttpRequest,问题同样出现在同一个地方
req.open("GET", url, true);
ie下正常。于是开始怀疑是firefox自己的问题,firefox可能更多的从安全方面做了考虑,拒绝http://localhost:8080这种带域名的访问方式。把js程序移到应用程序里,url改为
var url = '/app/get_data';
问题解决,访问正常。
2.点击日历单元格需要弹出一个窗口用于新增工作安排,在firfox里为了方便这样拼写
var TR=document.createElement("tr");
TR.innnerHTML
="<td><input ></td>";
firfox下正常,ie显示不出,改为下面方式则问题解决
var TR=document.createElement("tr");
var TD
=document.createElement("td");
TD.innnerHTML
="<input >";
TR.appendChild(TD);

posted @ 2007-02-28 21:53 ronghao 阅读(778) | 评论 (0)编辑 收藏
晚上9点的火车,回家!
posted @ 2007-02-15 15:30 ronghao 阅读(497) | 评论 (0)编辑 收藏
仅列出标题
共39页: First 上一页 24 25 26 27 28 29 30 31 32 下一页 Last 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

关注工作流和企业业务流程改进。现就职于ThoughtWorks。新浪微博:http://weibo.com/ronghao100

常用链接

留言簿(38)

随笔分类

随笔档案

文章分类

文章档案

常去的网站

搜索

  •  

最新评论

阅读排行榜

评论排行榜