From f25483815404b5921d0eeb076e9cf8294f68f73d Mon Sep 17 00:00:00 2001 From: zzyuan <781948537@qq.com> Date: Wed, 14 Jan 2026 08:59:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E5=85=B1=E6=9C=8D=E5=8A=A1=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E8=B7=B3=E8=BD=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/layout/components/Navbar.vue | 2 +- src/layout/index.vue | 2 +- src/permission.js | 30 ++++++++++++++++++++++---- src/utils/aes_new.js | 36 ++++++++++++++++++++++++++++++++ src/utils/auth.js | 2 +- src/utils/request.js | 6 +++--- vue.config.js | 2 +- 7 files changed, 69 insertions(+), 11 deletions(-) create mode 100644 src/utils/aes_new.js diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue index 7dd0bf1d..e802a157 100644 --- a/src/layout/components/Navbar.vue +++ b/src/layout/components/Navbar.vue @@ -108,7 +108,7 @@ export default { type: 'warning' }).then(() => { this.$store.dispatch('LogOut').then(() => { - location.href = '/glweb/'; + location.href = '/glweb/#/login'; }) }).catch(() => {}); } diff --git a/src/layout/index.vue b/src/layout/index.vue index 353ae377..f71a7b1a 100644 --- a/src/layout/index.vue +++ b/src/layout/index.vue @@ -162,7 +162,7 @@ export default { }, close() { this.$store.dispatch('LogOut').then(() => { - location.href = '/glweb/'; + location.href = '/glweb/#/login'; }) }, diff --git a/src/permission.js b/src/permission.js index d04ec990..8451c200 100644 --- a/src/permission.js +++ b/src/permission.js @@ -5,7 +5,9 @@ import NProgress from 'nprogress' import 'nprogress/nprogress.css' import { getToken } from '@/utils/auth' import { isRelogin } from '@/utils/request' - +import {bnsCloudDecrypt} from "@/utils/aes_new"; +import Cookies from "js-cookie"; +import { encrypt, decrypt } from '@/utils/jsencrypt' NProgress.configure({ showSpinner: false }) const whiteList = ['/login', '/register'] @@ -16,7 +18,7 @@ router.beforeEach((to, from, next) => { to.meta.title && store.dispatch('settings/setTitle', to.meta.title) /* has token*/ if (to.path === '/login') { - next({ path: '/' }) + next({ path: '/login' }) NProgress.done() } else if (whiteList.indexOf(to.path) !== -1) { next() @@ -34,7 +36,7 @@ router.beforeEach((to, from, next) => { }).catch(err => { store.dispatch('LogOut').then(() => { Message.error(err) - next({ path: '/' }) + next({ path: '/login' }) }) }) } else { @@ -47,12 +49,32 @@ router.beforeEach((to, from, next) => { // 在免登录白名单,直接进入 next() } else { - next(`/login?redirect=${encodeURIComponent(to.fullPath)}`) // 否则全部重定向到登录页 + // console.log(to) + if(to.redirectedFrom=='/'){ + next(`/login`) + }else{ + if(!to.query.params){ + next(`/login`) + }else{ + let str = bnsCloudDecrypt(to.query.params) + let username = str.split("&")[0].split("=")[1] + let password = str.split("&")[1].split("=")[1] + Cookies.set("username", username, { expires: 30 }); + Cookies.set("password", encrypt(password), { expires: 30 }); + Cookies.set('rememberMe', true, { expires: 30 }); + store.dispatch("Login", {'username':username,'password':password,'loginType':"USERNAME_PASSWORD"}).then(() => { + console.log(3) + next({ ...to, replace: true }) + }).catch(() => {}); + } + } NProgress.done() } } }) + + router.afterEach(() => { NProgress.done() }) diff --git a/src/utils/aes_new.js b/src/utils/aes_new.js new file mode 100644 index 00000000..36e0a60e --- /dev/null +++ b/src/utils/aes_new.js @@ -0,0 +1,36 @@ +// src/utils/aesUtil.js +import CryptoJS from 'crypto-js' +//公告服务平台加密参数跳转到本系统后参数解密 +/** + * AES解密函数 + * @param {string} word - 需要解密的字符串 + * @returns {string} 解密后的明文 + */ +export function bnsCloudDecrypt(word) { + const key = CryptoJS.enc.Utf8.parse("bonus@cloud@2025") + const decrypt = CryptoJS.AES.decrypt(word, key, { + mode: CryptoJS.mode.ECB, + padding: CryptoJS.pad.Pkcs7 + }) + return CryptoJS.enc.Utf8.stringify(decrypt).toString() +} + +/** + * AES加密函数 + * @param {string} word - 需要加密的明文 + * @returns {string} 加密后的字符串 + */ +export function bnsCloudEncrypt(word) { + const key = CryptoJS.enc.Utf8.parse("bonus@cloud@2025") + const srcs = CryptoJS.enc.Utf8.parse(word) + const encrypted = CryptoJS.AES.encrypt(srcs, key, { + mode: CryptoJS.mode.ECB, + padding: CryptoJS.pad.Pkcs7 + }) + return encrypted.toString() +} + +export default { + bnsCloudDecrypt, + bnsCloudEncrypt +} diff --git a/src/utils/auth.js b/src/utils/auth.js index a673d227..0136464b 100644 --- a/src/utils/auth.js +++ b/src/utils/auth.js @@ -1,6 +1,6 @@ import Cookies from 'js-cookie' -const TokenKey = 'Admin-Token' +const TokenKey = 'Glweb-Token' const ExpiresInKey = 'Admin-Expires-In' diff --git a/src/utils/request.js b/src/utils/request.js index a14a700d..b25a1fb8 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -110,7 +110,7 @@ service.interceptors.response.use(res => { if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') { return res.data } - if (code === 401) { + if (code === 401) { if (!isRelogin.show) { isRelogin.show = true MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { @@ -120,12 +120,12 @@ service.interceptors.response.use(res => { }).then(() => { isRelogin.show = false store.dispatch('LogOut').then(() => { - location.href = '/glweb/' + location.href = '/glweb/#/canteen/index' }) }).catch(() => { isRelogin.show = false }) - } + } return Promise.reject('无效的会话,或者会话已过期,请重新登录。') } else if (code === 500) { Message({ message: msg, type: 'error' }) diff --git a/vue.config.js b/vue.config.js index 7673a0b7..83664913 100644 --- a/vue.config.js +++ b/vue.config.js @@ -36,7 +36,7 @@ module.exports = { // detail: https://cli.vuejs.org/config/#devserver-proxy [process.env.VUE_APP_BASE_API]: { // target: `http://192.168.2.75:48380`,//旭 - target: `http://192.168.20.234:48390`,//测试 + target: `http://192.168.0.244:48380`,//测试 // target: `http://192.168.20.242:48380`,//测试 // target: `http://192.168.2.108:48380`,//测试 // target: `http://192.168.0.34:48380`,//测试