【发布时间】:2012-07-26 05:58:52
【问题描述】:
我正在开发一个基于 Spring 和 JSF 2.0 的应用程序。需要记住在过去 3 分钟内来自特定 IP 地址的客户端尝试提交表单的次数。如果在 3 分钟内记录了超过 3 次提交尝试,则应显示验证码。
我正在考虑使用 ConcurrentMap<String, ConcurrentLinkedQueue<Long>> 存储 IP 地址 (String) 并在队列 (ConcurrentLinkedQueue<Long>) 中提交时间 (milis)。 Quartz 将每隔 3 分钟清理一次队列(超过 3 分钟的 milis 将被删除)。要检查是否显示验证码,我将检查队列大小是否 > 3。
这是正确的方法吗?你有更好的想法吗?
【问题讨论】:
-
是否需要按 IP 范围搜索?