feat: 添加 FingerprintJS 依赖,集成访客 ID 和指纹数据功能

This commit is contained in:
Sunwuyuan
2025-11-30 16:23:43 +08:00
parent ba96069a9b
commit 5f363aba38
5 changed files with 91 additions and 22 deletions
+14 -22
View File
@@ -2,50 +2,42 @@
<v-app>
<!-- 正常路由 -->
<router-view v-slot="{ Component, route }">
<transition
mode="out-in"
name="md3"
>
<component
:is="Component"
:key="route.path"
/>
<transition mode="out-in" name="md3">
<component :is="Component" :key="route.path" />
</transition>
</router-view>
<global-message/>
<rate-limit-modal/>
<global-message />
<rate-limit-modal />
</v-app>
</template>
<script setup>
import {onMounted} from "vue";
import {useTheme} from "vuetify";
import {getSetting} from "@/utils/settings";
import { onMounted } from "vue";
import { useTheme } from "vuetify";
import { getSetting } from "@/utils/settings";
import RateLimitModal from "@/components/RateLimitModal.vue";
import Clarity from "@microsoft/clarity";
import { getVisitorId } from "@/utils/fingerprint";
const theme = useTheme();
onMounted(() => {
onMounted(async () => {
// 应用保存的主题设置
const savedTheme = getSetting("theme.mode");
theme.global.name.value = savedTheme;
const visitorId = await getVisitorId();
console.log("Visitor ID:", visitorId);
// Clarity 标识(保留在 App 层)
Clarity.identify(
getSetting("device.uuid"),
getSetting("server.domain"),
getSetting("server.provider"),
getSetting("server.classNumber")
);
Clarity.identify(visitorId);
Clarity.setTag("fingerprintjs", visitorId);
});
</script>
<style>
.md3-enter-active,
.md3-leave-active {
transition: opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1),
transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.md3-enter-from {