1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| import { createRouter, createWebHashHistory } from 'vue-router'; import store from '@/store';
const routes = [ { path: '/login', name: 'login', component: () => import( '@/views/Login.vue'), meta: { requiresGuest: true, }, }, { path: '/', name: 'home', component: () => import( '@/views/Home.vue'), meta: { requiresAuth: true, }, }, { path: '/:pathMatch(.*)*', redirect: { name: 'home', }, }, ];
const router = createRouter({ history: createWebHashHistory(), routes, });
router.beforeEach((to, from, next) => { // 檢查該路由是否需要令牌 if (to.meta.requiresAuth) { // 如果有令牌,就通行,否則導到登入頁 return store.state.token ? next() : next({ name: 'login' }); } // 檢查該路由是否不可有令牌 if (to.meta.requiresGuest)) { // 如果有令牌,就導到首頁 return store.state.token ? next({ name: 'home' }) : next(); } return next(); });
export default router;
|