我有一个使用kaptcha的spring mvc表单,以证明用户是人而不是机器。输入所请求的信息后,将生成一个随机值,该值必须在servlet上下文中可用120秒。用户可以获取该值并将其作为另一个应用程序(附加组件)的密钥输入,以完成注册过程。这就是为什么该随机值必须具有全局范围而不是会话范围的原因。如果在120秒内没有其他应用程序收到请求,我想销毁该随机字符串/对象。我在这里寻找最佳实践,即我能想到的一种方式是在Spring中实现的以下示例是一个示例。
1)创建一个可以容纳该随机值类型的多个对象的集合
2)将radom值保存在应用程序上下文中(不是会话)
3)使用global-session范围
定义那些对象4)当请求进来时,获取HttpServletRequest提取用户发送的值
5)迭代麻烦的应用程序上下文,如果发现这样的值,则进一步继续,如果不立即结束该过程。
现在理论上可行,但如果在定义的类型周期内没有请求对象,即120秒,我如何确保在120秒后销毁我在步骤1中生成的值。我想确保释放内存。
在Spring中实现此类构造的最佳实践是什么?我使用TaskScheduler或其他什么?是存储应用程序上下文的随机值的最佳位置吗?