我知道有通过js控制页面,还有利用Session生成唯一标识符,但是当web服务器有多个节点如何防止表单重复提交
4 回答

阿波罗的战车
TA贡献1862条经验 获得超6个赞
在springmvc配置文件中加入拦截器的配置,当转到页面的请求到来时,生成token的名字和token值,一份放到redis缓存中,一份放传给页面表单的隐藏域。
当表单请求提交时,拦截器得到参数中的tokenName和token,然后到缓存中去取token值,如果能匹配上,请求就通过,不能匹配上就不通过。这里的tokenName生成时也是随机的,每次请求都不一样。而从缓存中取token值时,会立即将其删除(删与读是原子的,无线程安全问题)。
添加回答
举报
0/150
提交
取消