From a18d6cb9596ae32452cf3280f60c6a3cd7261baa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com> Date: Thu, 9 Mar 2023 10:39:58 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ZR.Vue/src/utils/jsencrypt.js | 19 +++--------- ZR.Vue/src/utils/signalR.js | 56 +++++++++++++++++------------------ ZR.Vue/src/views/login.vue | 5 ++-- 3 files changed, 35 insertions(+), 45 deletions(-) diff --git a/ZR.Vue/src/utils/jsencrypt.js b/ZR.Vue/src/utils/jsencrypt.js index a132a02..d8ce5cd 100644 --- a/ZR.Vue/src/utils/jsencrypt.js +++ b/ZR.Vue/src/utils/jsencrypt.js @@ -1,22 +1,11 @@ -import JSEncrypt from 'jsencrypt/bin/jsencrypt' +import JSEncrypt from 'jsencrypt/bin/jsencrypt.min' // 密钥对生成 http://web.chacuo.net/netrsakeypair -const publicKey = '-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlJjf2lmK4zrpiATJSYfjkP2YhZ3SzKO0kqgX3Hg9o4NrgRgg9Abxw9vwZL7Weg22cJmahkx6waRYo8wXDqa2adJPntp60SAwWXou4cQTzHlySGQAC2U4CX54iHsKgqY7ifD2gmqJAkDnQkSXl4OKDTISnZcmlwIwo3Tj8jb9TWwIDAQAB-----END PUBLIC KEY-----'; +const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALj0zjON+EVdBsnMcR4Uj+jOYgp5ZipftQZ1utW8KvVioz+RSaotF1JHt59q9SC/mZcWWpbpcEqQ3WyyyCC33msCAwEAAQ==' -const privateKey = '-----BEGIN ENCRYPTED PRIVATE KEY-----MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIV5E4J9jebHICAggAMBQGCCqGSIb3DQMHBAhdEG1zo87qTASCAoB8kR8KXgHIOQJIppp/2qGb+I8qcx/++Mb3yCAceHRMFZyczqlbKlwaDWzUVS3PQwbktb4s2coJt1uq/YL8CxAP/EJyMWsqiJxSl+4Mql0cHPhociwC7avGLtB+J2+BJU/ytF4u+/sSRGeSddoqx2glmGtYuF9U' + -'qv3jVElfUUOr3iq0aGSQRjCguVHk8fW1vy6QYi9ipPT0/BjWu4NutRLr9TI+Sy/4' + -'F9e6PeIKefT8ZX/q6vO0C1kVoG3GT1EjQfIF5XjmqGPUX7AR4J8R+uplDakHKZdH' + -'l6tqH+nJNQQH2RuFzYOWmUU2BiMEuU6ortJc8HkOy7Ca4FVJywnNxjOqzikI8DFW' + -'M9NuhMOwUCBae4582qW0zlc+ZGY1uWAoan4f3kmNdfeLU0xzk1yeR8KkprDwRk0m' + -'6jNSSOkBlNPerCcYm+pIaOXw+NQaaU4RQwHfNZnOWjteSuOmcszXuzdniuclHLzG' + -'zEwTolwUX9ez1sZCCmrjJpYMG4b9NQait5gx77Ogg7ymxBKnK89Gfuh3v3xvV6Td' + -'01r1GLd+OWPaI2kxAqruD/ZsMwXMpOLAc9ljz6cgtqlmvEk6tpI+WpGCaJBZXUA6' + -'/dv7KQeiWFQF5Oao3kX0s0wW3s2B4A2QFDE9HZHAw12nlsST8nmh+8zTxQNXhBMx' + -'B/UBkFND4UseKwYT4k+L0MmYcyExCagDiFa7k2/08D8DSbCVSWBXTH6xKWPMvFwr' + -'z4f5znLZFdbXYHFp0LyAw4HJ3LeTj0q8f2hNMG7lWZKYI7XZfmvoBkhODdOt2wTv' + -'U/T0f/ibcUf9Q9YXZQQkv1NOwmDtAB1KvHIkh2LALc/BY4qEoUyEVtLg' + -'-----END ENCRYPTED PRIVATE KEY-----' +const privateKey = + 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAuPTOM434RV0GycxxHhSP6M5iCnlmKl+1BnW61bwq9WKjP5FJqi0XUke3n2r1IL+ZlxZalulwSpDdbLLIILfeawIDAQABAkB5PYAtq1KjpWddwPYlkbUEFsWNuCaQgExZ/7KJiN9gGjo/UfUZ3W39Orb8PITIYf1NbasReqgddAcsfJNyoDWBAiEA7K89DyTmbjNSmekdD3rejRDdMzzXYtcbo69ZjHoowMUCIQDIDN8eg6PcWk4kiRcRYcNEfriUJR7Fg07ellSPv821bwIhAJA5TEyxIJUgQwI0cZfgOELfdtrlBR5ek6IPlNKsEa89AiBbMVroexPQWC41A3VLjChKagXUKpO7b98dIqRLnyCz6wIgP3qpvnO4IOxY7f5XarfCVyIHZJAMt/R1f16P5OkKv+A=' // 加密 export function encrypt(txt) { diff --git a/ZR.Vue/src/utils/signalR.js b/ZR.Vue/src/utils/signalR.js index d666321..505e7be 100644 --- a/ZR.Vue/src/utils/signalR.js +++ b/ZR.Vue/src/utils/signalR.js @@ -13,74 +13,74 @@ export default { init(url) { const connection = new signalR.HubConnectionBuilder() .withUrl(url, { accessTokenFactory: () => getToken() }) - .withAutomaticReconnect()//自动重新连接 - .configureLogging(signalR.LogLevel.Information) - .build(); - this.SR = connection; + .withAutomaticReconnect() //自动重新连接 + .configureLogging(signalR.LogLevel.Warning) + .build() + this.SR = connection // 断线重连 connection.onclose(async () => { console.log('断开连接了') - console.assert(connection.state === signalR.HubConnectionState.Disconnected); - // 建议用户重新刷新浏览器 - await this.start(); + console.assert(connection.state === signalR.HubConnectionState.Disconnected) + // 建议用户重新刷新浏览器 + await this.start() }) connection.onreconnected(() => { console.log('断线重新连接成功') }) - this.receiveMsg(connection); + this.receiveMsg(connection) // 启动 // this.start(); }, /** * 调用 this.signalR.start().then(async () => { await this.SR.invoke("method")}) - * @returns + * @returns */ async start() { - var that = this; + var that = this try { //使用async和await 或 promise的then 和catch 处理来自服务端的异常 - await this.SR.start(); + await this.SR.start() //console.assert(this.SR.state === signalR.HubConnectionState.Connected); - console.log('signalR 连接成功了', this.SR.state); - return true; + console.log('signalR 连接成功了', this.SR.state) + return true } catch (error) { - that.failNum--; + that.failNum-- console.log(`失败重试剩余次数${that.failNum}`, error) if (that.failNum > 0) { setTimeout(async () => { await this.SR.start() - }, 5000); + }, 5000) } - return false; + return false } }, - // 接收消息处理 + // 接收消息处理 receiveMsg(connection) { - connection.on("onlineNum", (data) => { - store.dispatch("socket/changeOnlineNum", data); - }); + connection.on('onlineNum', (data) => { + store.dispatch('socket/changeOnlineNum', data) + }) // 接收欢迎语 - connection.on("welcome", (data) => { + connection.on('welcome', (data) => { console.log('welcome', data) Notification.info(data) - }); + }) // 接收后台手动推送消息 - connection.on("receiveNotice", (title, data) => { + connection.on('receiveNotice', (title, data) => { Notification({ type: 'info', title: title, message: data, dangerouslyUseHTMLString: true, - duration: 0 + duration: 0, }) }) // 接收系统通知/公告 - connection.on("moreNotice", (data) => { + connection.on('moreNotice', (data) => { if (data.code == 200) { - store.dispatch("socket/getNoticeList", data.data); + store.dispatch('socket/getNoticeList', data.data) } }) - } -} \ No newline at end of file + }, +} diff --git a/ZR.Vue/src/views/login.vue b/ZR.Vue/src/views/login.vue index c82eb20..ddb2e75 100644 --- a/ZR.Vue/src/views/login.vue +++ b/ZR.Vue/src/views/login.vue @@ -49,6 +49,7 @@ import { getCodeImg } from '@/api/system/login' import Cookies from 'js-cookie' import defaultSettings from '@/settings' +import { encrypt, decrypt } from '@/utils/jsencrypt' export default { name: 'Login', @@ -111,7 +112,7 @@ export default { this.loginForm = { username: username === undefined ? this.loginForm.username : username, - password: password === undefined ? this.loginForm.password : password, + password: password === undefined ? this.loginForm.password : decrypt(password), rememberMe: rememberMe === undefined ? false : Boolean(rememberMe), } }, @@ -121,7 +122,7 @@ export default { this.loading = true if (this.loginForm.rememberMe) { Cookies.set('username', this.loginForm.username, { expires: 30 }) - Cookies.set('password', this.loginForm.password, { + Cookies.set('password', encrypt(this.loginForm.password), { expires: 30, }) Cookies.set('rememberMe', this.loginForm.rememberMe, {