OAF的安全模式有两种,一种是standard,一种是selfSecured,默认是standard。如果设置为selfSecured,则由开发人员自行定义安全性验证,也就是对URL中传入参数的合法性验证。

之前介绍过 RF.jspfnd_run_function,它们是用于调用其他功能的。如果FND_VALIDATION_LEVEL和FND_FUNCTION_VALIDATION_LEVEL其中一个不为NONE,并且是调用OAF页面,则会自动添加oas参数,这是根据MAC key生成的加密字符串。访问页面时,系统会通过校验该值(通过URLTools.verifySecureURL)进行身份确认,如果不是同一个SESSION,则要求通过主页来重新进入。但是有时候,我们不想修改两个配置文件,同时又允许快速通过链接来访问OAF页面,该如何实现呢?关键就在于Security Mode。

当Security Mode为standard时,系统有默认的安全验证,即如上所述的特性。当其值设为selfSecured时,通过自行在控制器(Controller)中编写validateParameters来进行验证,如:

  public String[] validateParameters(OAPageContext oapagecontext, Vector vector)
  {
     String as[] = {
         "LEAD_ID", "SOURCE", "SECURESTR"
     };
     return as;
  }

如果不在控制器中编写validateParameters,则依旧默认为standard的行为。