From 340bc5b5e389d06e3ac2759fb1a97ead6e677c8c Mon Sep 17 00:00:00 2001 From: lbw <1192299468@qq.com> Date: Mon, 29 Dec 2025 14:45:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(auth):=20=E5=AE=9E=E7=8E=B0=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E6=B3=A8=E5=86=8C=E5=8A=9F=E8=83=BD=E5=92=8C=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 Login.vue 实现登录与注册界面,支持手机号、密码、验证码等验证 - 添加登录状态保持并在登录成功后设置 token - 修改路由配置,新增 /login 路由,并调整默认班级页路由为 /class - 移除 Header 组件中原有登录按钮,改为通过路由控制访问权限 - 实现路由前置守卫,根据 token 自动跳转登录页或班级页 - 添加验证码发送功能及倒计时禁用按钮逻辑 - 完善表单校验规则,区分登录和注册模式验证字段 --- enlish-vue/src/layouts/components/Header.vue | 8 +- enlish-vue/src/pages/Login.vue | 198 +++++++++++++++++++ enlish-vue/src/permission.js | 10 + enlish-vue/src/router/index.js | 16 +- 4 files changed, 221 insertions(+), 11 deletions(-) create mode 100644 enlish-vue/src/pages/Login.vue diff --git a/enlish-vue/src/layouts/components/Header.vue b/enlish-vue/src/layouts/components/Header.vue index a4ca3f0..30e4ecd 100644 --- a/enlish-vue/src/layouts/components/Header.vue +++ b/enlish-vue/src/layouts/components/Header.vue @@ -34,12 +34,6 @@ - - - Login - - @@ -65,7 +59,7 @@ aria-current="page">Home - 班级 diff --git a/enlish-vue/src/pages/Login.vue b/enlish-vue/src/pages/Login.vue new file mode 100644 index 0000000..dc1848c --- /dev/null +++ b/enlish-vue/src/pages/Login.vue @@ -0,0 +1,198 @@ + + + + + + + + + + 登录 + + + 注册 + + + + 登录 + 注册新用户 + 请输入手机号和密码进行登录 + 请填写以下信息进行注册 + + + + + + + + + + + + + + + + + + + + + + + + + {{ codeBtnText }} + + + + + + + + 立即登录 + 登录中... + 立即注册 + 处理中... + + + + + 欢迎来到智慧英语 + + + + + + + diff --git a/enlish-vue/src/permission.js b/enlish-vue/src/permission.js index 2820cd0..7c51f43 100644 --- a/enlish-vue/src/permission.js +++ b/enlish-vue/src/permission.js @@ -2,12 +2,22 @@ import router from '@/router/index' import { showMessage } from '@/composables/util' import { showPageLoading, hidePageLoading } from '@/composables/util' +import { getToken } from '@/composables/auth' // 全局路由前置守卫 router.beforeEach((to, from, next) => { console.log('==> 全局路由前置守卫') // 展示页面加载 Loading showPageLoading() + const token = getToken() + if (!token && to.path !== '/login') { + next({ path: '/login' }) + return + } + if (token && to.path === '/login') { + next({ path: '/class' }) + return + } next() }) diff --git a/enlish-vue/src/router/index.js b/enlish-vue/src/router/index.js index 37ba295..59a1d5b 100644 --- a/enlish-vue/src/router/index.js +++ b/enlish-vue/src/router/index.js @@ -5,14 +5,15 @@ import { createRouter, createWebHashHistory } from 'vue-router' import Admid from '@/pages/admid/admid.vue' import Student from '@/pages/student.vue' import PlanTTS from '@/pages/PlanTTS.vue' +import Login from '@/pages/Login.vue' // 统一在这里声明所有路由 const routes = [ { - path: '/', // 路由地址 - component: Class, // 对应组件 - meta: { // meta 信息 - title: '班级' // 页面标题 + path: '/class', + component: Class, + meta: { + title: '班级' } }, { @@ -43,6 +44,13 @@ const routes = [ title: '管理员页面' // 页面标题 } }, + { + path: '/login', + component: Login, + meta: { + title: '登录' + } + }, { path: '/plan/tts', component: PlanTTS,
请输入手机号和密码进行登录
请填写以下信息进行注册