你的 Pinia 加密插件
你的 Pinia 加密插件是一个基于 crypto-js 封装的实用hooks工具,用于在 Vue.js 应用程序中加密和解密敏感数据。它提供了一种简单且安全的方式来保护你的数据。
🌍 安装
你可以使用 npm 或 yarn 安装插件:
pnpm i vue3-encryption-plugin
🛹 使用方法
在你的主应用程序入口文件(例如 main.js)中,导入并使用 Pinia store 以及加密插件:
import { createApp } from "vue";
import { createPinia } from "pinia";
import App from "./App.vue";
import EncryptionPlugin from "vue3-encryption-plugin";
const app = createApp(App);
const pinia = createPinia();
app.use(pinia);
app.use(EncryptionPlugin, { key: "your-custom-secret-key" });
app.mount("#app");
🤖 加密和解密
一旦你设置了插件,你就可以在组件中使用 $encrypt 和 $decrypt 方法:
第一种: getCurrentInstance()
<!-- YourComponent.vue -->
import { getCurrentInstance } from 'vue';
setup(){
const { ctx } = getCurrentInstance();
const { proxy }: any = getCurrentInstance();
proxy.$attrs
proxy.$data
proxy.$el
proxy.$emit
proxy.$forceUpdate
proxy.$nextTick
proxy.$options
proxy.$parent
proxy.$props
proxy.$refs
proxy.$root
proxy.$slots
proxy.$watch
}
function handClick() {
console.log(
"加密 🚀 ==>:",
proxy.$encryptionPlugin.encrypt({ name: "zk", age: 26})
);
console.log(
"解密 🚀 ==>:",
proxy.$encryptionPlugin.decrypt(
"U2FsdGVkX1/PBDHn2pyLPAf6DmolvylM2QEIDhcf5I3WQWhOh19eos0uZfdbzdDP"
)
);
}
第二种 injict (推荐)
1:src / types / global.d.ts 定义类型
declare interface EncryptionPlugin {
encryptData: <T>(data: T) => string;
decryptData: <T>(encryptedData: string) => T;
}
如果你使用 eslint
请在 .eslintrc.cjs
文件中添加
globals: {
EncryptionPlugin: "readonly",
$encryptionPlugin: "readonly",
},
2: 页面使用
<script setup lang="ts">
import { inject } from 'vue';
const encryptionPlugin = inject("encryptionPlugin") as EncryptionPlugin;
function handClick() {
const encryptedData = encryptionPlugin.encryptData("Hello World");
const decryptedData = encryptionPlugin.decryptData(encryptedData);
console.log("加密 🚀 ==>:", encryptedData);
console.log("解密 🚀 ==>:", decryptedData);
}
</script>