登录优化

This commit is contained in:
不做码农 2023-03-09 10:39:58 +08:00
parent d483b4e58e
commit a18d6cb959
3 changed files with 35 additions and 45 deletions

View File

@ -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) {

View File

@ -13,22 +13,22 @@ 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();
},
@ -37,50 +37,50 @@ export default {
* @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)
}
})
}
},
}

View File

@ -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, {