首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 點贊功能:防止未登入用戶重複點擊的前後端策略

     編輯:程式設計綜合問答

前端即時阻擋

likeButton.setOnClickListener(v -> {
    if (alreadyLiked) {
        Toast.makeText(this, "已贊過", Toast.LENGTH_SHORT).show();
        return;
    }
    likeButton.setEnabled(false); // 防止連點
    api.like(postId, new Callback() {
        @Override public void onSuccess() {
            alreadyLiked = true;
            likeCount++;
            updateUI();
        }
        @Override public void onFailure() {
            likeButton.setEnabled(true);
        }
    });
});

後端核心防重(關鍵)

  1. 裝置指紋/ID:獲取 Android ID、廣告 ID 或生成 UUID 存本地,請求攜帶 device_id。
  2. 資料庫唯一索引:表 likes (post_id, device_id) 建立唯一複合索引。
  3. 冪等處理:INSERT IGNORE 或 ON DUPLICATE KEY UPDATE,回傳是否新增成功。

進階:Redis 分散式鎖

String key = "like:" + postId + ":" + deviceId;
Boolean acquired = redisTemplate.opsForValue().setIfAbsent(key, "1", 24, TimeUnit.HOURS);
if (!acquired) return "已贊過";
// 寫入 DB、更新計數...

總結

前端攔截提升體驗,後端唯一索引/分散式鎖保證資料正確性,兩者結合才能有效防刷。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved