使用spring攔截器,注解,redis實現。
前端請求表單設置id=token的隱藏(hedden)輸入框,使用ajax請求時先獲取token輸入框的值,
若值為空表示首次提交,先請求獲取服務器token的接口(后端服務器將token值加入redis緩存,設置過期時間15min),
返回后為隱藏域賦值。然后在表單提交時帶上token參數值,若首次提交請求,后台處理邏輯判斷token
存在於redis緩存中表示首次請求,驗證通過並刪除redis中對應的token值(若業務邏輯處理失敗出現異常再將token值放入redis中),
后續若重復請求表示發現緩存中token值不存在,提示(長時間未提交表單,表單過期請刷新【較少發生】)或請勿重復提交!
實現代碼: https://gitee.com/mint31/barry-spring-boot/tree/master/src/main/java/com/example/demo/autoidempotent
參照:
https://blog.csdn.net/weixin_42214548/article/details/102557531?utm_source=app
https://blog.csdn.net/jiahao1186/article/details/91793691
https://mp.weixin.qq.com/s?__biz=Mzg2MjEwMjI1Mg==&mid=2247493373&idx=1&sn=6953f10125945ad6105d603cf0750d6b&chksm=ce0e517ef979d868e4f33b739a9f02483f91af2c6337b1e8d899c97f6df2556592a85a9d43ad&mpshare=1&scene=23&srcid=06163VvcbphgUYVKiDNtVXR6&sharer_sharetime=1592308833640&sharer_shareid=31a887b367cac7d354789a3c04c26465#rd