diff --git a/api/auth.js b/api/auth.js index 32355e9..376ecc6 100644 --- a/api/auth.js +++ b/api/auth.js @@ -1,14 +1,34 @@ import { request } from '@/untils/AxiosUtils.js'; +import { + decryptJson +} from '@/untils/authService.js' import website from "@/config/website"; const authUrl = '/api/jobslink-api/user/user/auth/auth' -export const findAuth = () => request({ - url: '/api/jobslink-api/user/user/find', - method: 'get' -}); +// export const findAuth = () => request({ +// url: '/api/jobslink-api/user/user/find', +// method: 'get' +// }); + +export const findAuth = async () => { + try { + const encrypted = await request({ + url: '/api/jobslink-api/user/user/find', + method: 'get', + responseType: 'text', // 接收纯文本密文 + }); + const decryptedStr = decryptJson(encrypted.data); + return { + data: JSON.parse(decryptedStr), + }; + } catch (error) { + console.error('请求或解密过程中出错:', error); + return null; + } +}; export const cheakValue = () => request({ url: authUrl, diff --git a/config.js b/config.js index 5f3d042..92e1627 100644 --- a/config.js +++ b/config.js @@ -7,6 +7,7 @@ module.exports = { // 显示标题 showTitle: false, loginURl: 'https://dy12333.org.cn/h5/#/pages/qyPackge/user/login/login', + AESKey: 'mL8na90u+5hoa/HKiMinvA==', // map 1、黑色模块 2、白色模块 // supperMap: 'http://10.165.0.44:1205/proxy/rest/maps/f346b6c59dc64d5793713cf384fab78d/33cbaa14370449a08588f1074ecfec67', // supperMap: 'http://10.165.0.44:1205/proxy/rest/maps/c02c6f51f3ab4190bffd5e3e54cf5ac4/111013e9067749488d44841208771768', diff --git a/manifest.json b/manifest.json index eb8d4d8..0ac3152 100644 --- a/manifest.json +++ b/manifest.json @@ -5,6 +5,7 @@ "versionName": "1.0.0", "versionCode": "100", "transformPx": false, + "sassImplementationName": "node-sass", "app-plus": { "usingComponents": true, "compilerVersion": 3, diff --git a/package-lock.json b/package-lock.json index 8cc90ab..63793c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1805,6 +1805,11 @@ "resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz", "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" }, + "crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, "csscolorparser": { "version": "1.0.3", "resolved": "https://registry.npmmirror.com/csscolorparser/-/csscolorparser-1.0.3.tgz", diff --git a/package.json b/package.json index cb2f72a..6cc6d36 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "license": "ISC", "dependencies": { "@supermap/iclient-ol": "^11.1.1", + "crypto-js": "^4.2.0", "decimal.js": "^10.2.0", "js-base64": "^2.4.9", "js-md5": "^0.7.3", @@ -26,4 +27,4 @@ "devDependencies": { "@supermap/babel-plugin-import": "0.0.1" } -} \ No newline at end of file +} diff --git a/untils/authService.js b/untils/authService.js new file mode 100644 index 0000000..be79dc1 --- /dev/null +++ b/untils/authService.js @@ -0,0 +1,44 @@ +import CryptoJS from 'crypto-js'; +import overAllConfig from '@/config.js' + +/** + * AES-CBC 解密(从 Base64 中提取随机 IV) + * @param {string} base64Str - 加密后的 Base64 字符串(IV + 密文) + * @param {string} keyStr - 16 字节密钥字符串 + * @returns {string} 解密后的明文 + */ +export function decryptJson(encryptedBase64, base64Key = overAllConfig.AESKey) { + try { + // 1. Base64 解码密钥 & 数据 + const key = CryptoJS.enc.Base64.parse(base64Key); + const combinedData = CryptoJS.enc.Base64.parse(encryptedBase64); + + // 2. 提取 IV(前16字节 = 4 个 32bit Word) + const ivWords = combinedData.words.slice(0, 4); + const iv = CryptoJS.lib.WordArray.create(ivWords, 16); + + // 3. 提取密文(剩余部分) + const ciphertextWords = combinedData.words.slice(4); + const ciphertext = CryptoJS.lib.WordArray.create( + ciphertextWords, + combinedData.sigBytes - 16 + ); + + // 4. 解密 + const decrypted = CryptoJS.AES.decrypt({ + ciphertext + }, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7, // 等价于 Java 的 PKCS5Padding + }); + + const result = decrypted.toString(CryptoJS.enc.Utf8); + + if (!result) throw new Error('解密失败,返回空字符串(可能密钥错误或格式错误)'); + return result; + } catch (e) { + console.error('解密失败:', e); + return ''; + } +} \ No newline at end of file