123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import { DEFAULT_CACHE_TIME } from '../../settings/encryptionSetting';
- import { getStorageShortName } from '/@/utils/helper/envHelper';
- import { cacheCipher } from '/@/settings/encryptionSetting';
- import Encryption from '/@/utils/encryption/aesEncryption';
- export default class WebCookie {
- private encryption: Encryption;
- private hasEncrypt: boolean;
- constructor(hasEncrypt = true, key = cacheCipher.key, iv = cacheCipher.iv) {
- const encryption = new Encryption({ key, iv });
- this.encryption = encryption;
- this.hasEncrypt = hasEncrypt;
- }
- private getKey(key: string) {
- return `${getStorageShortName()}${key}`.toUpperCase();
- }
- /**
- * Add cookie
- * @param name cookie key
- * @param value cookie value
- * @param expire
- * If the expiration time is not set, the default management browser will automatically delete
- * e.g:
- * cookieData.set('name','value',)
- */
- setCookie(key: string, value: any, expire: number | null = DEFAULT_CACHE_TIME) {
- value = this.hasEncrypt ? this.encryption.encryptByAES(JSON.stringify(value)) : value;
- document.cookie = this.getKey(key) + '=' + value + '; Max-Age=' + expire;
- }
- /**
- * Get the cook value according to the key
- * @param key cookie key
- */
- getCookie(key: string) {
- const arr = document.cookie.split('; ');
- for (let i = 0; i < arr.length; i++) {
- const arr2 = arr[i].split('=');
- if (arr2[0] === this.getKey(key)) {
- let message: any = null;
- const str = arr2[1];
- if (this.hasEncrypt && str) {
- message = this.encryption.decryptByAES(str);
- try {
- return JSON.parse(message);
- } catch (e) {
- return str;
- }
- }
- return str;
- }
- }
- return '';
- }
- /**
- * Delete cookie based on cookie key
- * @param key cookie key
- */
- removeCookie(key: string) {
- this.setCookie(key, 1, -1);
- }
- /**
- * clear cookie
- */
- clearCookie(): void {
- const keys = document.cookie.match(/[^ =;]+(?==)/g);
- if (keys) {
- for (let i = keys.length; i--; ) {
- document.cookie = keys[i] + '=0;expires=' + new Date(0).toUTCString();
- }
- }
- }
- }
|