软件测试中Oracle Form二次开发实战总结 第十二章 Function&Form Security

发表于:2010-12-21来源:作者:点击数: 标签:软件测试oracleOracleORACLE缺陷管理;缺陷评估
软件测试中 Oracle Form二次 开发 实战总结 第十二章 FunctionForm Security oracle是殷墟(Yin Xu)出土的甲骨文(oracle bone inscriptions)的英文翻译的第一个单词,在英语里是“神谕”的意思。Oracle是世界领先的信息管理软件开发商,因其复杂的关系 数

软件测试中Oracle Form二次开发实战总结 第十二章 Function&Form Security

oracle是殷墟(Yin Xu)出土的甲骨文(oracle bone inscriptions)的英文翻译的第一个单词,在英语里是“神谕”的意思。Oracle是世界领先的信息管理软件开发商,因其复杂的关系数据库产品而闻名。Oracle数据库产品为财富排行榜上的前1000家公司所采用,许多大型网站也选用了Oracle系统。

关于Form的安全机制,我觉得可以从以下几个方面去分析:

1是否有权限打开这个Form;

2打开Form后,在操作层面上权限有限制(如有的用户仅能查询,有些用户可以更新等);

3对于Form中不同的部件,用户的权限不一(如用户A可以点击审批的按钮,用户B不行)。


对于情况1,EBS采用我们非常熟悉的Basic Function Security,这是一种基于responsibility、menu和function(功能)的管理机制,不再赘述。


情况2时,实现的方法有多种:

(1)    定义FUNCTION时,设置QUERY_ONLY参数;

(2)    用变量记录登录用户的信息,并依此动态的设置Block和Item的属性,需要注意的是:Item的inset_allowed,update_allowed属性只能从界面上控制不能添加或修改,并不能控制代码进行的添加或修改;而Block的inset_allowed,update_allowed属性从真正意义上对代码行为进行限制,用代码操作上述属性为否的Block,系统会提示出错;

(3)    使用Form.个性化设置;

(4)    使用User Profile。


针对情况3,实现的方法有就更多:

(1)    类似情况2中,可根据Form. Parameter的不同值开启或禁用Form的某些功能;

(2)    使用Form.个性化设置;

(3)    使用User Profile;

(4)   集成工作流控制;

(5)    Advanced Function Security将考虑更加详细的安全机制,用户是否有权使用某个form中的某个subfunction,是否有权看见form的某个部件,是否有权打开新的窗体等等。对于这种安全控制策略,我的理解是这样的:首先在系统里定义一个subfunction,然后把它挂到某个responsibility的menu下,然后在form里判断登录的用户具有subfunction的访问权限,激活或禁用该Form的功能。


下面是关于Advanced Function Security的示例代码:

在form的pre-form. trigger中调用FND_FUNCTION.TEST函数验证登录用户的权限:

IF (FND_FUNCTION.TEST('DEMVC_DEMVCEOR_PRINT_ORDER')) THEN

        app_special.instantiate('SPECIAL1','产品组合查询');

        app_special.enable('SPECIAL1',PROPERTY_ON);

        SET_ITEM_PROPERTY('CONTROL.LINE_SEARCH',ENABLED,PROPERTY_TRUE);

END IF;

系统会检测登录用户是否具有对subfunction- DEMVC_DEMVCEOR_PRINT_ORDER的访问权限,验证通过的话则激活一个SPECIAL菜单项和一个按钮项。
 

 

原文转自:http://www.ltesting.net