From 00faa74f69b230dbdb48cf9a4789982228679f07 Mon Sep 17 00:00:00 2001 From: mzc5649 <13027087095@163.com> Date: Fri, 16 Apr 2021 13:20:42 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90add=E3=80=91=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=87=87=E7=94=A8RSA=E5=8A=A0=E5=AF=86=E7=9A=84=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E8=BF=9B=E8=A1=8C=E5=A4=84=E7=90=86=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=90=8D=E5=92=8C=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jero-web/package-lock.json | 5 +++++ jero-web/package.json | 1 + jero-web/src/api/login.js | 15 +++++++++++++++ jero-web/src/views/user/Login.vue | 26 ++++++++++++++++++++++---- 4 files changed, 43 insertions(+), 4 deletions(-) diff --git a/jero-web/package-lock.json b/jero-web/package-lock.json index a6486d63..180289ee 100644 --- a/jero-web/package-lock.json +++ b/jero-web/package-lock.json @@ -9570,6 +9570,11 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, + "jsencrypt": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsencrypt/-/jsencrypt-3.1.0.tgz", + "integrity": "sha512-A4fIgyPN38G7wwB5t1Vkpi+w7j/nHKdradl/k9/GQqwAsxJqAJ55j3P5rWO3dvjhzOyWKOmK//WwzPO+o6gW0g==" + }, "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", diff --git a/jero-web/package.json b/jero-web/package.json index b930f457..1948abb0 100644 --- a/jero-web/package.json +++ b/jero-web/package.json @@ -24,6 +24,7 @@ "enquire.js": "^2.1.6", "js-base64": "^3.6.0", "js-cookie": "^2.2.0", + "jsencrypt": "^3.0.0-rc.1", "lodash.get": "^4.4.2", "lodash.pick": "^4.4.0", "md5": "^2.2.1", diff --git a/jero-web/src/api/login.js b/jero-web/src/api/login.js index b3599899..1d565f58 100644 --- a/jero-web/src/api/login.js +++ b/jero-web/src/api/login.js @@ -71,4 +71,19 @@ export function thirdLogin(token,thirdType) { 'Content-Type': 'application/json;charset=UTF-8' } }) +} + +/** + * 获取RSA公钥 + * @returns {*} + */ +export function getRSAPublicKey() { + return axios({ + url: `/sys/getRSAPublicKey`, + method: 'get', + timeout: 5000, + headers: { + 'Content-Type': 'application/json;charset=UTF-8' + } + }) } \ No newline at end of file diff --git a/jero-web/src/views/user/Login.vue b/jero-web/src/views/user/Login.vue index bfd58a93..6dfc4f93 100644 --- a/jero-web/src/views/user/Login.vue +++ b/jero-web/src/views/user/Login.vue @@ -182,6 +182,9 @@ import { ACCESS_TOKEN ,ENCRYPTED_STRING} from "@/store/mutation-types" import { putAction,postAction,getAction } from '@/api/manage' import { USER_INFO } from "@/store/mutation-types" + import {getRSAPublicKey} from '@/api/login.js' + const Base64 = require('js-base64').Base64 + import {JSEncrypt} from 'jsencrypt' export default { components: {}, @@ -211,6 +214,7 @@ currdatetime:'', randCodeImage:'', requestCodeSuccess:false, + rsaPublicKey:'' } }, created () { @@ -218,6 +222,7 @@ Vue.ls.remove(ACCESS_TOKEN) this.getRouterData(); this.handleChangeCheckCode(); + }, methods: { ...mapActions(['Login', 'Logout', 'PhoneLogin']), @@ -236,14 +241,19 @@ that.loginBtn = true; that.form.validateFields([ 'username', 'password','inputCode', 'rememberMe' ], { force: true }, (err, values) => { if (!err) { - loginParams.username = values.username - loginParams.password = values.password + loginParams.remember_me = values.rememberMe loginParams.captcha = that.inputCodeContent loginParams.checkKey = that.currdatetime - // console.log("登录参数",loginParams) + loginParams.rsaPublicKey = that.rsaPublicKey; + // 新建JSEncrypt对象 + let encrypt = new JSEncrypt(); + encrypt.setPublicKey(loginParams.rsaPublicKey); + // 公钥加密 + loginParams.username = encrypt.encrypt(values.username) + loginParams.password = encrypt.encrypt(values.password) + //登录 that.Login(loginParams).then((res) => { - //登录成功 this.loginSuccess() }).catch((err) => { if (err.code === 500) { @@ -309,6 +319,14 @@ }).catch(()=>{ this.requestCodeSuccess=false }) + this.getPublicKey(); + }, + //获取RSA公钥 + getPublicKey(){ + // 获取公钥 + getRSAPublicKey().then(res => { + this.rsaPublicKey = res.result + }) }, loginSuccess () { this.$router.push({ path: "/dashboard/analysis" }).catch((res)=>{})