11 回答

TA貢獻1860條經驗 獲得超8個贊
1:點擊按鈕后使按鈕不可用
借助 js 之力,在提交按鈕點擊后,即取消按鈕的可用性??梢宰钃蹙W絡延遲的時候用戶反復點擊提交按鈕,導致多次提交。尤其對 ajax提交的站點有效;
甚至在 disable 按鈕后,可以稍微人性化地給出提示,比如使用 jQuery 代碼在提交時可以這樣:
$(".hisu").attr("disabled","disabled");
$(".hisu").attr("value","正在發布評論...");
2:使用session做標記
session 支持用戶整個會話的信息存儲,在用戶提交表單的同時使用 session 存儲用戶的提交信息,這種解決方法在業內被稱作為令牌法,即token。
基本的步驟是:
1.用戶提交數據的時候,創建session,例如創建一個名為 token 值為當前時間戳的 session;
2.存入數據庫的邏輯要在存入之前檢查是否有名為 token 的 session ,如果有,則返回錯誤,禁止提交;
這種方法應該算是在根源上杜絕了表單的重復提交。但是最好是能兩者結合起來,確保數據安全的前提下還可以保證用戶體驗。

TA貢獻1900條經驗 獲得超5個贊
一般的重復提交都是前端控制點擊事件,后端通過token+session(或者緩存)保證唯一提交;
之前做過一個防ajax重復點擊的功能是把URI和用戶唯一標識和一個次數標志放在緩存中,使用攔截器每次校驗此次請求的合法性,主要是由于我們此次ajax請求業務比較復雜耗時較長,不知道能不能適用你的需求

TA貢獻1804條經驗 獲得超2個贊
重復提交也就是在前端限制一下就可以,你總不能限制后臺接口不允許重復請求吧?換句話說,如果你的接口復合restful規范,重復請求的結果也是一樣的。
添加回答
舉報