From 5e15a55596a54aed97b0f6320448d71f60fedbcf Mon Sep 17 00:00:00 2001 From: duanshuwen Date: Mon, 17 Nov 2025 20:52:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 9 +- src/main.ts | 10 +- src/router/index.ts | 14 + src/utils/request.ts | 8 + src/views/login/index.vue | 16 +- yarn.lock | 8133 +++++++++++++++++++++++++++++++++++++ 6 files changed, 8173 insertions(+), 17 deletions(-) create mode 100644 yarn.lock diff --git a/package.json b/package.json index 4956a1d..9809cba 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "description": "My Electron application description", "main": ".vite/build/main.js", "scripts": { - "start": "electron-forge start", + "start": "node node_modules/@electron-forge/cli/dist/electron-forge.js start", "package": "electron-forge package", "make": "electron-forge make", "publish": "electron-forge publish", @@ -17,6 +17,10 @@ "email": "duanshuwen@gogpay.cn" }, "license": "MIT", + "resolutions": { + "node-gyp": "^10.2.0", + "@electron/node-gyp": "npm:node-gyp@^10.2.0" + }, "devDependencies": { "@electron-forge/cli": "^7.10.2", "@electron-forge/maker-deb": "^7.10.2", @@ -48,5 +52,6 @@ "pinia": "^2.3.1", "vue": "^3.5.22", "vue-router": "^4.5.1" - } + }, + "packageManager": "yarn@4.11.0+sha512.4e54aeace9141df2f0177c266b05ec50dc044638157dae128c471ba65994ac802122d7ab35bcd9e81641228b7dcf24867d28e750e0bcae8a05277d600008ad54" } diff --git a/src/main.ts b/src/main.ts index a5df7dc..b10361f 100644 --- a/src/main.ts +++ b/src/main.ts @@ -17,8 +17,8 @@ const createWindow = () => { width: 900, height: 670, autoHideMenuBar: true, - // frame: false, - // windowButtonVisibility: false, + frame: false, + windowButtonVisibility: false, resizable: true, maximizable: true, minimizable: true, @@ -61,9 +61,9 @@ const createWindow = () => { mainWindow.webContents.openDevTools(); } - const tabs = new TabManager(mainWindow) - registerTabIpc(tabs) - tabs.create('about:blank') + // const tabs = new TabManager(mainWindow) + // registerTabIpc(tabs) + // tabs.create('about:blank') }; // This method will be called when Electron has finished diff --git a/src/router/index.ts b/src/router/index.ts index 97ae176..222006e 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -10,6 +10,7 @@ const routes = [ path: "/browser", name: "Browser", component: () => import("@/views/browser/BrowserLayout.vue"), + meta: { requiresAuth: true }, }, { path: "/about", @@ -23,4 +24,17 @@ const router = createRouter({ routes, }); +router.beforeEach((to, _from, next) => { + const token = localStorage.getItem("token"); + if (to.meta && (to.meta as any).requiresAuth && !token) { + next({ path: "/" }); + return; + } + if (to.path === "/" && token) { + next({ path: "/browser" }); + return; + } + next(); +}); + export default router; diff --git a/src/utils/request.ts b/src/utils/request.ts index bd505f3..81b8b9b 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -8,6 +8,10 @@ const instance = axios.create({ // 添加拦截器 instance.interceptors.request.use( (config) => { + const token = localStorage.getItem('token') + if (token) { + config.headers = { ...(config.headers || {}), Authorization: `Bearer ${token}` } + } return config }, (error) => { @@ -21,6 +25,10 @@ instance.interceptors.response.use( return response.data }, (error) => { + if (error && error.response && error.response.status === 401) { + try { localStorage.removeItem('token') } catch {} + if (typeof window !== 'undefined') window.location.href = '/' + } return Promise.reject(error) } ) diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 9f49452..db8ad2e 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -37,10 +37,6 @@ placeholder="请输入密码" @keyup.enter="onSubmit" /> -

{{ errors.password }}

@@ -58,6 +54,7 @@