开发人员工具
Application Development Framework
第 5 章 —“暂不具备”需求(但是我们仍然要实现这些需求):防止恶意访问2009 年 5 月发表 单击此处查看“从设计到实践全面了解 Oracle ADF 应用程序”描述和目录。 在本章中,我们将添加一些功能以防止恶意访问,具体做法是,阻塞已在最近一小时内连续进行三次查询但未找到任何结果的 IP 地址。我们可以在用户点击 Enquiry 按钮时进行检查,如果用户失败次数过多可以拒绝查询,但在其失败三次后立即隐藏该按钮以使其无法继续操作则更为简洁。我们已经在第 3 章的操作中获取了用户的 IP 地址。 按照类似于前几个阶段的方式,我们需要将这些要求分解为独立的可解决单元,包括:
创建一个视图对象以使我们可以访问前一小时的查询结果。我们创建一个名为 IpCheckView 的视图对象。该视图对象将通过 SQL 查询进行只读访问。无需返回有意义的值,因为我们只想知道返回的行数,因此,我们仅选择了一个文字“x”。该视图将具有一个单独的绑定参数 pUserIp,我们使用该参数传入用户的 IP 地址。 修改页面绑定以使我们可以访问 IP 检查信息。由于我们将需要引用页面上的 IP 地址,因此我们需要更改 EnquiryBean 类。我们可以添加以下代码:
String userIPAddr;
public String getuserIPAddr() {
return userIPAddr;
}
public void setuserIPAddr(String userIPAddr) {
this.userIPAddr = userIPAddr;
}
然后,更改 storeUserInformation 方法,如下所示:
public void storeUserInformation() {
setuserIPAddr(getRemoteAddr());
String userTermsAndConditions = getTermsAndConditions();
String userEnquirySource = getEnquirySourceCode();
DCDataControl dc = BindingContext.getCurrent().getDefaultDataControl();
ApplicationModule am = (ApplicationModule)dc.getDataProvider();
AppModuleImpl service = (AppModuleImpl)am;
service.logSession(userIPAddr, userTermsAndConditions, userEnquirySource);
}
注意仅第 2 行发生变化。 现在,我们需要修改 SearchPage 的绑定,为 IpCheckView 添加一个迭代器。 在 Create Action 对话框中,我们从下拉列表中选择迭代器 IpCheckView1Iterator,并在 Operation 中选择 ExecuteWithParams。 链接绑定参数 pUserIp 和我们为页面用户确定的 IP 地址最简单的方法是使用 Expression Builder。 #{enquiryBean.userIPAddr}。现在,我们的页面已经可以使用 IpCheckView 中的记录和查询操作,我们的绑定将如下所示。 识别从其执行 IP 地址检查的事件。我们需要在每次查询后检查当前 IP 地址查询失败次数,因此我们将从 Enquiry 按钮上的操作调用 ExecuteWith Params1。 我们还希望在用户第一次接受条款和条件时检查查询失败次数,以防用户关闭之前会话并重新开启一个新的会话(但是通过同一 IP 地址访问该页面)。我们还可以在 Accept 按钮的操作中添加一个调用以调用 ExecuteWith Params1 操作。 修改页面组件以在检查失败时禁用 Enquiry 按钮。如果用户查询尝试失败次数过多,我们现在可以隐藏 Enquiry 按钮。我们按照如下所示设置 Enquiry 按钮的 Rendered 属性:输入一个无效搜索;我们没有看到结果: 总结在本章中,我们添加了代码以防止恶意访问,具体做法是,阻塞已在最近一小时内连续进行三次查询但未找到任何结果的 IP 地址。本系列文章所描述的重要技术之一是直接维护页面绑定,而不是通过在页面中创建组件间接维护。您将发现该方法不仅有助于创建更多的高级功能,更增强了我们对该技术的认识。(关于数据绑定的更多信息,请参见 Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework 11g Release 1 的第 11 节。) 本文至本章已结束! 单击此处查看“从设计到实践全面了解 Oracle ADF 应用程序”描述和目录。 | ||||||||||||||||||||||||||||||||||||||||||||||||