註冊時同一個用戶註冊多回,資料庫中也出現多條一樣的數據,後台已經進行了校驗,前台js也限制了兩秒提交一次,但是還是會出現多條
前端可以在進入頁面的時候設定註冊按鈕可以點擊,在點擊發送註冊請求的時候先把註冊按鈕設定成不可點擊,等請求回來假設註冊失敗,則把按鈕再設定成可以點擊。
資料庫中用唯一索引作限制
不知道你是用debouce還是throttle限制兩秒提交的
debouce
throttle
比較好的做法是點選註冊把按鈕停用掉,等請求回傳再在回呼函數啟用按鈕,記得報錯的回呼也要啟用註冊按鈕
後端資料庫欄位也要做唯一索引
服務端校驗需要作唯一性的判斷;前端按鈕點擊後禁止點擊,等待服務端返回後解除禁止點擊,或透過超時方式來實現
註冊必須要做唯一驗證
資料庫加上用戶名主鍵唯一驗證呀
前端禁用按鈕的方案雖然也是必需的,但是這個僅僅只是避免普通用戶多次點擊而已,不能阻止非瀏覽器的'用戶'不管伺服器接受了多少次重複的請求,必須後端進行處理目的是同一個使用者只能註冊一次,參考其他回答,主鍵
參考我的文章Web專案如何防止客戶端重複發送請求
前端可以在進入頁面的時候設定註冊按鈕可以點擊,在點擊發送註冊請求的時候先把註冊按鈕設定成不可點擊,等請求回來假設註冊失敗,則把按鈕再設定成可以點擊。
資料庫中用唯一索引作限制
不知道你是用
debouce
還是throttle
限制兩秒提交的比較好的做法是點選註冊把按鈕停用掉,等請求回傳再在回呼函數啟用按鈕,記得報錯的回呼也要啟用註冊按鈕
後端資料庫欄位也要做唯一索引
服務端校驗需要作唯一性的判斷;前端按鈕點擊後禁止點擊,等待服務端返回後解除禁止點擊,或透過超時方式來實現
註冊必須要做唯一驗證
資料庫加上用戶名主鍵唯一驗證呀
前端禁用按鈕的方案雖然也是必需的,但是這個僅僅只是避免普通用戶多次點擊而已,不能阻止非瀏覽器的'用戶'
不管伺服器接受了多少次重複的請求,必須後端進行處理
目的是同一個使用者只能註冊一次,參考其他回答,主鍵
參考我的文章Web專案如何防止客戶端重複發送請求