个人资料和岗位列表联调,简历优化部分页面

This commit is contained in:
2026-04-01 11:41:51 +08:00
parent 0468339d23
commit 821a950df2
42 changed files with 5935 additions and 748 deletions
+25 -5
View File
@@ -1,6 +1,7 @@
import { createRouter, createWebHistory } from 'vue-router'
import type { RouteRecordRaw } from 'vue-router'
import store from '@/stores'
import { checkLogin } from '@/api/auth'
/**
* 静态路由 — 不需要权限,应用启动就注册
@@ -30,8 +31,10 @@ const router = createRouter({
* 全局前置守卫 — 核心逻辑:
*
* 1. 动态路由未加载 → 先拉取并注册,再重新进入当前路由
* 2. 需要鉴权的路由没有 token → 回首页
* 3. 其他情况 → 直接放行
* 2. 需要鉴权的路由 → 调 checkLogin 接口验证 Cookie 是否有效
* - 有效:同步 isAuthenticated = true放行
* - 无效:同步 isAuthenticated = false,弹登录框,阻止导航
* 3. 不需要鉴权的路由 → 直接放行
*/
router.beforeEach(async (to, _from, next) => {
// 动态路由只需加载一次,与登录状态无关
@@ -46,9 +49,26 @@ router.beforeEach(async (to, _from, next) => {
return
}
// 需要鉴权的路由,未登录则回首页
if (to.meta?.requiresAuth && !store.state.isAuthenticated) {
next({ name: 'Home' })
// 需要鉴权的路由,每次都通过接口校验登录状态
if (to.meta?.requiresAuth) {
try {
const res = await checkLogin()
if (res.code === '0' && res.data === true) {
// Cookie 有效,同步前端状态并放行
store.commit('SET_AUTHENTICATED', true)
next()
} else {
// 未登录或 Cookie 失效
store.commit('SET_AUTHENTICATED', false)
store.dispatch('openLogin', to.fullPath)
next(false)
}
} catch {
// 请求异常(网络错误等),也视为未登录
store.commit('SET_AUTHENTICATED', false)
store.dispatch('openLogin', to.fullPath)
next(false)
}
return
}