diff --git a/frontend/src/utils/rsaEncrypt.ts b/frontend/src/utils/rsaEncrypt.ts new file mode 100644 index 0000000..00590bb --- /dev/null +++ b/frontend/src/utils/rsaEncrypt.ts @@ -0,0 +1,29 @@ +import JSEncrypt from 'jsencrypt/bin/jsencrypt.min' +// 密钥对生成 http://web.chacuo.net/netrsakeypair + +const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANL378k3RiZHWx5AfJqdH9xRNBmD9wGD\n' + + '2iRe41HdTNF8RUhNnHit5NpMNtGL0NPTSSpPjjI1kJfVorRvaQerUgkCAwEAAQ==' + +const privateKey = 'MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8\n' + + 'mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9p\n' + + 'B6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue\n' + + '/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZ\n' + + 'UBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6\n' + + 'vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha\n' + + '4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3\n' + + 'tTbklZkD2A==' + +// 加密 +export function encrypt(txt:string) { + const encryptor = new JSEncrypt() + encryptor.setPublicKey(publicKey) // 设置公钥 + return encryptor.encrypt(txt) // 对需要加密的数据进行加密 +} + +// 解密 +export function decrypt(txt:string) { + const encryptor = new JSEncrypt() + encryptor.setPrivateKey(privateKey) + return encryptor.decrypt(txt) +} + diff --git a/frontend/src/views/system/userlogin/login.vue b/frontend/src/views/system/userlogin/login.vue index 93ffe7f..adbe049 100644 --- a/frontend/src/views/system/userlogin/login.vue +++ b/frontend/src/views/system/userlogin/login.vue @@ -5,6 +5,7 @@ import { ElMessage } from 'element-plus' import { useRoute, useRouter } from 'vue-router' import { userLogin } from '@/api/data-visualization/manage/user' import { useCache } from '@/data-visualization/hooks/web/useCache' +import { encrypt,decrypt } from '@/utils/rsaEncrypt'; const { wsCache } = useCache() const router = useRouter() const route = useRoute() @@ -34,10 +35,11 @@ const submitForm = async (formEl: FormInstance | undefined) => { if (!formEl) return await formEl.validate((valid, fields) => { if (valid) { + var password = encrypt(form.value.password) const params = { appid:props.id, username: form.value.username, - password: form.value.password + password: password } userLogin(params).then((res:any) => { if(res.code == '0'){ diff --git a/frontend/src/views/system/userlogin/login_container.vue b/frontend/src/views/system/userlogin/login_container.vue index 96c16bd..983a177 100644 --- a/frontend/src/views/system/userlogin/login_container.vue +++ b/frontend/src/views/system/userlogin/login_container.vue @@ -11,6 +11,7 @@ import defaultTemplate from '@/views/system/userlogin/login.vue?raw' // import { moduleList, moduleById } from '@/api/application/module' import { userLogin } from '@/api/data-visualization/manage/user' import { useCache } from '@/data-visualization/hooks/web/useCache' +import { encrypt,decrypt } from '@/utils/rsaEncrypt'; const route = useRoute() const router = useRouter() const sfcCode = ref(defaultTemplate) @@ -47,7 +48,8 @@ const runCode = async () => { 'vue/dist/vue.esm-bundler.js': Vue, 'vue-router': VueRouter, '@/api/data-visualization/manage/user': { userLogin }, - '@/data-visualization/hooks/web/useCache': { useCache } + '@/data-visualization/hooks/web/useCache': { useCache }, + '@/utils/rsaEncrypt':{ encrypt,decrypt } }, getFile: async (fileName:any) => { if (fileName.startsWith('@/')) {