我正在开发一个基于Spring和JSF 2.0的应用程序。有一个要求是在过去的3分钟内记住特定IP地址的客户端尝试提交表单的次数。如果在3分钟内记录了超过3次提交尝试,则应显示验证码。
我考虑使用
这种方法正确吗?您有更好的想法吗?
我考虑使用
ConcurrentMap<String, ConcurrentLinkedQueue<Long>>
来存储ip地址(String
)和队列(ConcurrentLinkedQueue<Long>
)中的提交时间(毫秒)。Quartz将在3分钟间隔内清理队列(删除3分钟以上的毫秒)。为了检查是否显示验证码,我将检查队列大小是否大于3。这种方法正确吗?您有更好的想法吗?