数据加密与缓存
npm i -S crypto-js js-cookie
- 使用 AES 加密,其他加密方式自行更改
// encryption.js
import CryptoJS from "crypto-js";
const secretKey = "secret";
export const encrypt = (data) => {
return CryptoJS.AES.encrypt(JSON.stringify(data), secretKey).toString();
};
export const decrypt = (ciphertext) => {
const bytes = CryptoJS.AES.decrypt(ciphertext, secretKey);
return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));
};
- 定义 cookie.js ,进行加密后缓存操作。
// cookie.js
import Cookies from "js-cookie";
import { encrypt, decrypt } from "./encryption.js";
const getSecretCookie = (name = "", field) => {
const info = Cookies.get(name, { path: "" });
if (!info) return null;
try {
if (info && decrypt(info)) {
return field ? decrypt(info)[field] : decrypt(info);
}
} catch (e) {
console.log("error===>", e);
}
};
const setSecretCookie = (k, v) => {
Cookies.set(k, encrypt(v), { path: "" });
};
export { getSecretCookie, setSecretCookie };
export const TOKEN_KEY = "token";
export function getToken() {
return Cookies.get(TOKEN_KEY, { path: "" });
}
export function setToken(token) {
return Cookies.set(TOKEN_KEY, token, { path: "" });
}
export function removeToken() {
return Cookies.remove(TOKEN_KEY, { path: "" });
}
export function setCookie(k, v) {
return setSecretCookie(k, v);
}
export function getCookie(k) {
return getSecretCookie(k);
}
export function removeCookie(k) {
return Cookies.remove(k, { path: "" });
}
export function removeAllCookies() {
Object.keys(Cookies.get()).forEach((key) =>
Cookies.remove(key, { path: "" })
);
}
- 使用方法
import { setCookie, getCookie } from "./cookie.js";
const name = "demo";
setCookie(name, {
name: "demo",
sex: "N",
});
// 获取所有信息
getCookie(name);
// 获取对象内的指定属性值
getCookie(name, "name");
住:如是小程序使用该加密方式,crypto-js 建议为 3.3.0 版本,并自行重定义 Cookie 相关信息。
Powered by Waline v2.15.8