无码国模产在线观看免费-无码国内精品久久人妻-无码国内精品久久综合88-无码国内精品人妻少妇-无码国内精品人妻少妇蜜桃视频-无码国语中文在线播放

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

十萬火急,客戶數據被截圖泄密了,緊急需求加水印...

admin
2025年4月12日 10:12 本文熱度 264

項目經理老王:?? 緊急加需求! 現在水印不僅要全頁面覆蓋,還要遍布每個角落!用戶就算截個按鈕局部圖,也得帶著水印!代碼必須給全,從生成到防護一條龍!B端產品必須要全加水印,快快快...

碼農小彬:?? 沒問題!上完整解決方案!
直接甩出完整代碼+原理分析??


?? 全頁面動態水印(Vue3 + Canvas + 防刪監控)

? 核心目標

  1. 全頁面密集水印 —— 無論用戶截取哪部分頁面,必帶水印
  2. 動態綁定用戶信息 —— 顯示機密-{用戶名}-{時間}
  3. 防刪除/隱藏 —— 監聽DOM變動自動恢復
  4. 零操作干擾 —— 透明+事件穿透

?? 完整代碼實現

1. 水印生成組件 Watermark.vue

這個代碼就是給整個網頁打上帶用戶信息和時間的透明水印,刪不掉還自動更新,防截圖防篡改。

<template>
  <!-- 水印層(覆蓋整個視口) -->
  <div ref="watermarkEl" class="global-watermark"></div>
</template>

<script setup>
import { ref, onMounted, watch } from 'vue';

const props = defineProps({
  text: { type: String, default: '內部保密' },  // 基礎文本
  userId: { type: String },                    // 綁定用戶ID
  opacity: { type: Number, default: 0.1 },     // 透明度
  density: { type: Number, default: 150 },     // 水印密度(像素間隔)
});

const watermarkEl = ref(null);

// ?? 動態生成水印圖(Canvas繪制)
const generateWatermark = () => {
  const canvas = document.createElement('canvas');
  const ctx = canvas.getContext('2d');
  const size = props.density; // 水印單元間距
  
  canvas.width = size * 2;
  canvas.height = size * 2;
  
  ctx.font = '14px Arial';
  ctx.fillStyle = `rgba(100, 100, 100, ${props.opacity})`;
  ctx.rotate(-25 * Math.PI / 180); // 傾斜25度
  
  // 填充文本(含動態用戶信息+時間)
  const dynamicText = `${props.text} - ${props.userId || '未知用戶'} - ${new Date().toLocaleString()}`;
  ctx.fillText(dynamicText, 10, size);
  
  return canvas.toDataURL('image/png');
};

// ?? 更新水印背景
const updateWatermark = () => {
  if (!watermarkEl.value) return;
  watermarkEl.value.style.backgroundImage = `url(${generateWatermark()})`;
};

// ?? 監聽文本/用戶ID變化
watch([() => props.text, () => props.userId], updateWatermark);

// ??? 防刪除監聽(MutationObserver)
const initObserver = () => {
  const observer = new MutationObserver((mutations) => {
    mutations.forEach((mutation) => {
      if (mutation.removedNodes.length) {
        const removed = Array.from(mutation.removedNodes);
        if (removed.some(node => node === watermarkEl.value)) {
          document.body.appendChild(watermarkEl.value); // 強制恢復水印
          console.warn('?? 檢測到水印被移除,已自動恢復!');
        }
      }
    });
  });
  
  observer.observe(document.body, { childList: true, subtree: true });
};

onMounted(() => {
  updateWatermark();
  initObserver();
});
</script>

<style scoped>
.global-watermark {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-repeat: repeat; /* 關鍵!重復鋪滿 */
  pointer-events: none;      /* 穿透點擊 */
  z-index: 9999;            /* 確保在最頂層 */
  opacity: v-bind('props.opacity');
}
</style>

2. 在管理后臺入口調用

呃...這個代碼大概就是在網頁最外層加了個半透明的水印,寫著"機密數據",還綁定了當前登錄用戶的ID,然后下面正常顯示網頁的其他內容這樣子!

<template>
  <div id="app">
    <!-- 全屏水印(綁定當前用戶) -->
    <Watermark 
      text="機密數據" 
      :userId="currentUser.id" 
      :opacity="0.15" 
      :density="120" 
    />
    <router-view /> <!-- 其他頁面內容 -->
  </div>
</template>

<script setup>
import Watermark from '@/components/Watermark.vue';
import { useAuthStore } from '@/stores/auth';

const currentUser = useAuthStore().user; // 假設從Pinia獲取用戶
</script>

??? 增強防護

1. 禁用開發者工具(可選)

這個代碼就是...如果有人想按F12或者Ctrl+Shift+I打開瀏覽器開發者工具,網頁就會彈窗警告。

// 在main.js中添加
document.addEventListener('keydown', (e) => {
  if (e.key === 'F12' || (e.ctrlKey && e.shiftKey && e.key === 'I')) {
    e.preventDefault();
    alert('禁止開發者工具!');
  }
});

2. 動態水印刷新(防截圖拼接)

這個代碼就是...讓水印每隔1小時變一次!

// 每小時更新一次水印時間戳
setInterval(() => {
  updateWatermark();
}, 60 * 60 * 1000);

?? 關鍵點說明

特性實現方式效果
全頁面覆蓋background-repeat: repeat無論頁面多大,水印無限平鋪
動態內容綁定userId+時間戳每個用戶水印唯一,可追溯
防刪除MutationObserver監聽DOM刪除后自動重新插入
操作無阻pointer-events: none可點擊下方按鈕/輸入框

?? 注意事項

  1. 性能優化:水印密度(density)建議≥100px,避免Canvas渲染壓力
  2. 移動端適配:測試100vh在移動端的表現,必要時改用window.innerHeight
  3. 有時候可能還需要后端做一些操作,前端水印顯示用戶ID和時間,后端同時記錄操作日志,一旦泄露就能通過水印信息查后端日志精準定位責任人(就像快遞面單+物流系統,撕掉面單也能通過系統查誰寄的)。

作者:盞燈
鏈接:https://juejin.cn/post/7491920480598769705
來源:稀土掘金
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

該文章在 2025/4/12 18:35:23 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 97精品人妻酒店综合大胆无码 | 日本成年一区久久综合 | 2024精品综合久久久久 | 凹凸18禁在线视频 | 无码人妻精品国产婷婷 | 成年人免费网站视频 | 婷婷色婷婷开心五月四房播播 | se亚洲国产综合自在线 | 欧美亚洲综合另类型色妞 | 无码高潮少妇多水 | 欧美成人免费在线观看 | 亚洲永久精品国产大片 | 久久精品女人天堂v免费观看 | 日本啪啪a片免费还看aⅴ | 国产成人a区在线观看 | 国产a级精精彩大片免费看 国产a级精品一级毛片 | 无码人妻a∨一区二区三区四区 | 国产精品无码久久av不卡巴西a级毛片 | 91久久99 | 国产伦精品一区二区三区 | 国产一卡2卡三卡4卡在线观看 | 国产成人人综合亚洲欧美丁香花 | 欧美夜夜噜2024最新 | av中文字幕一区二区三区久久 | 国产亚洲成AV人片在线观黄桃 | 99热久久这里只精品国产WWW | 国产AV麻豆MAG剧集 | 麻豆高清免费国产一区 | 欧美一区二区三区不卡 | 91在线精品国产丝袜超清 | 亚洲欧美日韩视频高清专区 | 亚洲欧美日韩成人网 | av无码精品一区二区三区宅噜噜 | 免费看污又色又爽又黄又脏小说 | 无码专区人妻系列日韩视频 | 麻豆果冻传媒2024精品传媒一区 | 国产日韩欧美一区二区三区视频 | 日韩精品人妻系列一区二区三区 | 边啃奶头边躁狠狠躁AV | 国产精品久久久天堂 | 制服丝袜国产一区二区 |