AI_Painting_V2.0/src/router/index.js

76 lines
1.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { createRouter, createWebHistory } from 'vue-router'
import { useUserStore } from '@/stores'
import { getToken, setToken } from '@/utils/auth'
const routes = [
{
path: '/',
redirect: '/home'
},
{
path: '/login',
name: 'Login',
component: () => import('@/views/login/index.vue')
},
{
path: '/home',
name: 'home',
component: () => import('@/views/home/index.vue')
},
{
path: '/generate',
name: 'generate',
component: () => import('@/views/home/index.vue')
}
]
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes
})
router.beforeEach(async (to, from) => {
if (to.query.token) {
setToken(to.query.token)
} else {
// 检查是否有 token
const token = getToken()
if (!token) {
// 没有 token重定向到登录页
return '/login'
}
}
// 白名单路径(不需要验证 token 的路径)
const whiteList = ['/login']
// 获取用户 store 实例
const userStore = useUserStore()
// 如果访问的是白名单路径,直接放行
if (whiteList.includes(to.path)) {
return true
}
// 检查 token 是否有效
try {
const isTokenValid = await userStore.checkTokenValid()
console.log(isTokenValid)
if (isTokenValid) {
// token 有效,允许访问
if (!userStore.userInfo.id) {
// 如果用户信息不存在,则从服务器获取
await userStore.getInfo()
}
return true
} else {
// token 无效,重定向到登录页
return '/login'
}
} catch (error) {
// 验证过程中出错,重定向到登录页
console.error('验证 token 时出错:', error)
return '/login'
}
})
export default router