@pubinfo-pr/module-pinia-crypto
v0.238.1
Published
pubinfo 框架的加密集成
Readme
@pubinfo/module-pinia-crypto
为 Pinia 持久化状态提供统一的存储加解密能力。这个模块不直接改 Pinia,而是利用 Pubinfo 暴露的 pinia:persist:write / pinia:persist:read 钩子,在状态落盘前后处理字符串。
它在做什么
- 提供
piniaCrypto()模块注册函数 - 默认提供一个基于
crypto-js的 AES 加密器 - 支持
cbc/ecb两种模式 - 支持
include/exclude精确匹配 store - 支持完全自定义
cipher - 失败时可按
debug输出日志,但不会中断业务
基本用法
import { createPiniaAesCipher, piniaCrypto } from '@pubinfo/module-pinia-crypto';
export function setupPiniaCrypto() {
return piniaCrypto({
cipher: createPiniaAesCipher({
secret: 'demo-secret-key',
iv: 'demo-secret-iv',
mode: 'cbc',
}),
include: ['user', /^settings/],
debug: import.meta.env.DEV,
});
}只有声明了
persist的 Pinia store 才会触发这里的读写钩子。
主要导出
piniaCryptocreatePiniaAesCipherPiniaCryptoOptionsPiniaCryptoCipherPiniaAesCipherOptionsStoreMatcher
选项
enable: 是否启用,默认trueinclude: 仅对匹配的 store 加密;为空时表示不过滤exclude: 从加密集合里排除 storecipher: 自定义加密器,优先级高于secret/iv/modesecret: 默认 AES key,会补齐或截断为 32 字节iv: CBC 模式使用的 IV,会补齐或截断为 16 字节mode:cbc或ecbdebug: 是否打印错误日志
StoreMatcher 支持:
type StoreMatcher =
| string
| RegExp
| ((payload) => boolean)自定义 Cipher
import type { PiniaCryptoCipher } from '@pubinfo/module-pinia-crypto';
const customCipher: PiniaCryptoCipher = {
encrypt: ({ value }) => value,
decrypt: ({ value }) => value,
};仓库关系
这个模块依赖 Pubinfo 核心的 Pinia 持久化钩子体系,因此它不是通用 Pinia 插件,而是 Pubinfo 生态内的增强模块。
