登録時に、同じユーザーが複数回登録し、データベースに同じデータが複数表示されます。バックグラウンドは検証されており、フロントエンドの JS も 2 秒に 1 回の送信を制限していますが、複数のデータがまだ表示されます
フロントエンドは、ページに入るときに登録ボタンをクリックできるように設定できます。クリックして登録リクエストを送信すると、リクエストが返されて登録が失敗したときに、ボタンがクリックできないように設定されます。クリックできるように設定します。
データベース内の制限として一意のインデックスを使用する
送信を 2 秒に制限するために debouce还是throttle を使用しているかどうかはわかりません
debouce
throttle
より良い方法は、[登録] をクリックしてボタンを無効にし、リクエストが返されるのを待ってから、エラーを報告するコールバックで忘れずに [登録] ボタンを有効にすることです。
サーバー側の検証には一意性の判断が必要です。フロントエンドボタンをクリックした後にクリックを無効にするか、サーバーが戻ってクリックのブロックを解除するのを待つか、タイムアウトを通じて実装します
登録には独自の認証が必要です
データベースとユーザー名の主キーの一意の検証
フロントエンドのボタンを無効にする解決策も必要ですが、これは一般のユーザーが複数回クリックすることを防ぐだけであり、ブラウザ以外の「ユーザー」を防ぐことはできませんサーバーがどれだけ繰り返しリクエストを受け入れても、それはサーバーによって処理される必要がありますバックエンド目的同じユーザーは一度だけ登録できます、他の回答を参照、主キー
私の記事「Web プロジェクトでクライアントが繰り返しリクエストを送信しないようにする方法」を参照してください
フロントエンドは、ページに入るときに登録ボタンをクリックできるように設定できます。クリックして登録リクエストを送信すると、リクエストが返されて登録が失敗したときに、ボタンがクリックできないように設定されます。クリックできるように設定します。
データベース内の制限として一意のインデックスを使用する
送信を 2 秒に制限するために
debouce
还是throttle
を使用しているかどうかはわかりませんより良い方法は、[登録] をクリックしてボタンを無効にし、リクエストが返されるのを待ってから、エラーを報告するコールバックで忘れずに [登録] ボタンを有効にすることです。
バックエンドデータベースフィールドにも一意にインデックスを付ける必要がありますサーバー側の検証には一意性の判断が必要です。フロントエンドボタンをクリックした後にクリックを無効にするか、サーバーが戻ってクリックのブロックを解除するのを待つか、タイムアウトを通じて実装します
登録には独自の認証が必要です
データベースとユーザー名の主キーの一意の検証
フロントエンドのボタンを無効にする解決策も必要ですが、これは一般のユーザーが複数回クリックすることを防ぐだけであり、ブラウザ以外の「ユーザー」を防ぐことはできません
サーバーがどれだけ繰り返しリクエストを受け入れても、それはサーバーによって処理される必要がありますバックエンド
目的同じユーザーは一度だけ登録できます、他の回答を参照、主キー
私の記事「Web プロジェクトでクライアントが繰り返しリクエストを送信しないようにする方法」を参照してください