From 5271bd21e81117d632b0d632e89a526680dec46f Mon Sep 17 00:00:00 2001 From: "meilin.huang" <954537473@qq.com> Date: Mon, 18 Jul 2022 20:36:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=99=BB=E5=BD=95=E5=BC=BA=E5=88=B6?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E5=BC=B1=E5=AF=86=E7=A0=81&=E5=85=B3?= =?UTF-8?q?=E9=94=AE=E4=BF=A1=E6=81=AF=E5=8A=A0=E5=AF=86=E4=BC=A0=E8=BE=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mayfly_go_web/package.json | 3 +- mayfly_go_web/src/common/openApi.ts | 2 + mayfly_go_web/src/common/rsa.ts | 37 + .../views/login/component/AccountLogin.vue | 192 +- mayfly_go_web/src/views/ops/db/DbEdit.vue | 10 +- .../src/views/ops/machine/MachineEdit.vue | 11 +- .../src/views/ops/mongo/MongoDataOp.vue | 8 +- .../src/views/ops/mongo/MongoEdit.vue | 7 +- .../src/views/ops/redis/RedisEdit.vue | 22 +- .../src/views/ops/redis/RedisList.vue | 2 +- mayfly_go_web/yarn.lock | 2546 +++++++++-------- server/go.mod | 4 +- server/initialize/router.go | 5 +- server/internal/common/api/common.go | 16 + server/internal/common/router/common.go | 21 + server/internal/devops/api/db.go | 6 + server/internal/devops/api/form/redis.go | 1 + server/internal/devops/api/machine.go | 5 + server/internal/devops/api/mongo.go | 5 + server/internal/devops/api/redis.go | 6 + .../internal/devops/application/redis_app.go | 5 +- server/internal/sys/api/account.go | 58 +- server/internal/sys/api/form/account.go | 6 + server/internal/sys/router/account.go | 8 + server/pkg/biz/bizerror.go | 20 +- server/pkg/ctx/log_handler.go | 2 +- server/pkg/ginx/ginx.go | 2 +- server/pkg/model/result.go | 2 +- server/pkg/utils/crypto_utils.go | 119 + 29 files changed, 1804 insertions(+), 1327 deletions(-) create mode 100644 mayfly_go_web/src/common/rsa.ts create mode 100644 server/internal/common/api/common.go create mode 100644 server/internal/common/router/common.go 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 @@