登录页功能完成

This commit is contained in:
田岩
2025-06-13 18:00:28 +08:00
parent a3060cb959
commit f032e1fe03
134 changed files with 27506 additions and 807 deletions
+90
View File
@@ -0,0 +1,90 @@
import CryptoJS from 'crypto-js'// 引入AES加密库 npm install crypto-js@3.1.9-1 -save
// import { JSEncrypt } from 'jsencrypt'; // npm install jsencrypt -save
const RsaPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCZf8e1tzYTSr7KciAHH2KrE3O13ftuv3rHRRz7MztYXirMdLquocTNSJ5BAoj1H3V8fvFtfmN6BkuB6XnQrbY5heOzZZQWvO4qAa0EktwkLQUwCkYJfaQNc1Iw4wZFt4VO7U8+LLo+IO7jtxmaNIBqJm8laDc1C6zw2ETZD4bQ6wIDAQAB"
const iv = CryptoJS.enc.Utf8.parse('1234567812345678');
//定义rsa加密类
// const crypt = new JSEncrypt();
// crypt.setPublicKey(RsaPublicKey); // 设置公钥
// 生成一个随机的128位(16字节)AES密钥
const generateAESKey = () => {
return CryptoJS.lib.WordArray.random(16);
}
// 转化生成AES密钥成base64字符串
const getGenerateAESKeyBase64 = (aesKey) => aesKey.toString(CryptoJS.enc.Base64)
// 执行rsa加密
const encryptRSA = (str) => crypt.encrypt(str)
// 执行rsa解密
const decryptRSA = (str) => crypt.decrypt(str)
// 执行aes加密
export const encryptAES = (data, aesKeyBase64, iv) => {
const key = CryptoJS.enc.Utf8.parse(aesKeyBase64);
return CryptoJS.AES.encrypt(JSON.stringify(data), key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}).toString();
}
// aes解密
const decryptAES = (ciphertext, aesKeyBase64, iv) => {
const key = CryptoJS.enc.Utf8.parse(aesKeyBase64);
const bytes = CryptoJS.AES.decrypt(ciphertext, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));
}
// 加密过程
export const encryptData = (data={}) => {
const aesKey = generateAESKey(); // 获取随机密钥key
const aesKeyBase64 = getGenerateAESKeyBase64(aesKey) // 变成base64
const key = encryptRSA(aesKeyBase64)
const ciphertext = encryptAES(data, aesKeyBase64, iv);
const decryptedData = decryptAES(ciphertext, aesKeyBase64, iv);
return {text:ciphertext, key:key, aesKeyBase64:aesKeyBase64}
}
// 解密过程
export const decryptData= (aesStr, aesKey) => {
return decryptAES(aesStr, aesKey, iv)
}
/**
* AES加密
* @param plainText 明文
* @param keyInBase64Str base64编码后的key
* @returns {string} base64编码后的密文
*/
export function encryptByAES(plainText, keyInBase64Str) {
let key = CryptoJS.enc.Base64.parse(keyInBase64Str);
let encrypted = CryptoJS.AES.encrypt(plainText, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
});
// 这里的encrypted不是字符串,而是一个CipherParams对象
return encrypted.ciphertext.toString(CryptoJS.enc.Base64);
}
/**
* AES解密
* @param cipherText 密文
* @param keyInBase64Str base64编码后的key
* @return 明文
*/
export function decryptByAES(cipherText, keyInBase64Str) {
let key = CryptoJS.enc.Base64.parse(keyInBase64Str);
// 返回的是一个Word Array Object,其实就是Java里的字节数组
let decrypted = CryptoJS.AES.decrypt(cipherText, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
});
return decrypted.toString(CryptoJS.enc.Utf8);
}
+27 -4
View File
@@ -9,15 +9,38 @@ export const useAccountLoginApp = (data) => request({
url: '/access/userLogin',
method: 'post',
data
}).then(({ rtnCode, body }) => {
}).then(async({ rtnCode, body }) => {
if (rtnCode === '0000') {
setToken(body.sessionKeyEncry)
setUserInfo(body.userInfo)
return body
setToken(body)
// deptId: ""
// deptName: null
// loginName: "ADMIN"
// orgId: "00E200"
// orgName: "金融科技部"
// userId: "USER001"
// userName: "ADMIN"
// userStatus: "01"
const user_data = await queryCurrentUser()
setUserInfo(user_data.body)
return user_data.body
}
return Promise.reject({ rtnCode, body })
})
// 获取个人信息
export const queryCurrentUser = (data) => request({
url: '/access/queryCurrentUser',
method: 'post',
data
})
//获取隐私协议
export const getYsxy = (data) => request({
url: '/dfAgtInfo/queryValidDfAgt',
method: 'post',
data
})
// 获取验证码(作废)
export const getLoginAppCheckCode = (data) => request({
url: '/access/checkCode',
+7 -10
View File
@@ -43,6 +43,7 @@ export default function request({
if (isStream) { // 流式传输,直接返回
return resolve(response);
}
// 0005 QQ0005 登录已过期
// 模拟拦截器功能
const res = response.data
@@ -53,17 +54,13 @@ export default function request({
if (res.rtnCode === '0000'){
return resolve(res)
}
if (res.rtnCode === '0005') {
common.msg(res.message || 'Error')
} else if (res.rtnCode !== '0000') {
if (res.rtnCode !== '0002') { // 0002 报错 这里不拦截,和后端约定好的
common.msg(res.rtnCode == "9999" ? "系统异常" : res.message || 'Error')
return reject(res)
}
return resolve(res)
} else {
return resolve(res)
if (res.rtnCode === '0005' || res.rtnCode === 'QQ0005'){
common.hideLoading()
common.show('未登录','现在去登录').then(() => {
common.navigateTo('/pages/login/login')
})
}
return reject(res)
}
});
})