私は Laravel/VueJS で好き嫌いシステムを開発しています。
私のシステムは動作していますが、スパマーを避けたいと思っています。
いいねボタン:
リーリー10 は、laravel Blade で生成される投稿 ID です...
これが私がスパマーを避ける方法です:
リーリーしかし、ここには何かが欠けているか、何か間違ったことをしています。同様のアイコンを非常に素早くクリックしてリクエストを確認すると、axios は 3-4-5 リクエストを送信します (クリックの速さに応じて)
3 ~ 5 回のリクエストの後のみ、data.allowed
は false
になります。なぜ?欲しい:###
P粉7524794672024-02-27 10:11:57
this.allowed = false;
は API 呼び出しが完了するまで呼び出され、その間にさらにスパムを送信できるようになります。
if(this.allowed)
を検証した直後に、これを false
に設定します。
if (this.allowed) { this.allowed = false; // 次に呼び出しを実行します }
P粉4773692692024-02-27 09:15:48
like: function (id, event) { // first, check if the `like` can be sent to server if (!this.allowed) return; // remember that we are sending request, not allowed to `like` again this.allowed = false; var self = this; // you need this to remember real this axios.post('/posts/' + id + '/like', { post_id: id, }).then((response) => { ..... code .... // send notification to user Vue.toasted.show('Bla bla bla successfuly liked post', { duration: 2000, onComplete: function () { //After notification ended, user gets permission to like/dislike again. self.allowed = true; } ); }).catch(function() { // maybe you also need this catch, in case network error occurs self.allowed = true; }) ....