diff --git a/mayfly_go_web/package.json b/mayfly_go_web/package.json index 9f08c35d..dc88bb1b 100644 --- a/mayfly_go_web/package.json +++ b/mayfly_go_web/package.json @@ -14,6 +14,7 @@ "cropperjs": "^1.5.11", "echarts": "^5.3.3", "element-plus": "^2.2.9", + "jsencrypt": "^3.2.1", "jsoneditor": "^9.9.0", "lodash": "^4.17.21", "mitt": "^3.0.0", @@ -23,7 +24,7 @@ "sql-formatter": "^7.0.3", "vue": "^3.2.37", "vue-clipboard3": "^1.0.1", - "vue-router": "^4.0.16", + "vue-router": "^4.1.2", "vuex": "^4.0.2", "xterm": "^4.19.0", "xterm-addon-fit": "^0.5.0" diff --git a/mayfly_go_web/src/common/openApi.ts b/mayfly_go_web/src/common/openApi.ts index 2bd17f60..e72c5136 100644 --- a/mayfly_go_web/src/common/openApi.ts +++ b/mayfly_go_web/src/common/openApi.ts @@ -2,6 +2,8 @@ import request from './request' export default { login: (param: any) => request.request('POST', '/sys/accounts/login', param, null), + changePwd: (param: any) => request.request('POST', '/sys/accounts/change-pwd', param, null), + getPublicKey: () => request.request('GET', '/common/public-key', null, null), captcha: () => request.request('GET', '/sys/captcha', null, null), logout: (param: any) => request.request('POST', '/sys/accounts/logout/{token}', param, null), getMenuRoute: (param: any) => request.request('Get', '/sys/resources/account', param, null) diff --git a/mayfly_go_web/src/common/rsa.ts b/mayfly_go_web/src/common/rsa.ts new file mode 100644 index 00000000..8f907e56 --- /dev/null +++ b/mayfly_go_web/src/common/rsa.ts @@ -0,0 +1,37 @@ +import openApi from './openApi'; +import JSEncrypt from 'jsencrypt' +import { notBlank } from './assert'; + +var encryptor: any = null + +export async function getRsaPublicKey() { + let publicKey = sessionStorage.getItem('RsaPublicKey') + if (publicKey) { + return publicKey + } + publicKey = await openApi.getPublicKey() as string + sessionStorage.setItem('RsaPublicKey', publicKey) + return publicKey +} + +/** + * 公钥加密指定值 + * + * @param value value + * @returns 加密后的值 + */ +export async function RsaEncrypt(value: any) { + // 不存在则返回空值 + if (!value) { + return "" + } + if (encryptor != null) { + return encryptor.encrypt(value) + } + console.log(value) + encryptor = new JSEncrypt() + const publicKey = await getRsaPublicKey() as string; + notBlank(publicKey, "获取公钥失败") + encryptor.setPublicKey(publicKey)//设置公钥 + return encryptor.encrypt(value) +} \ No newline at end of file diff --git a/mayfly_go_web/src/views/login/component/AccountLogin.vue b/mayfly_go_web/src/views/login/component/AccountLogin.vue index b17cdd7a..c43d37f4 100644 --- a/mayfly_go_web/src/views/login/component/AccountLogin.vue +++ b/mayfly_go_web/src/views/login/component/AccountLogin.vue @@ -1,54 +1,75 @@