12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import Vue from 'vue';
- import VueRouter from 'vue-router';
- import HomeView from '../views/HomeView.vue';
- Vue.use(VueRouter);
- const routes = [
- {
- path: '/',
- name: 'home',
- component: HomeView,
- },
- {
- path: '/about',
- name: 'about',
- // route level code-splitting
- // this generates a separate chunk (about.[hash].js) for this route
- // which is lazy-loaded when the route is visited.
- component: () =>
- import(/* webpackChunkName: "about" */ '../views/AboutView.vue'),
- },
- {
- path: '/login',
- name: 'login',
- component: () => import('../views/Login.vue'),
- },
- ];
- const router = new VueRouter({
- routes,
- });
- // 由于后台管理系统 需要用户登录后才可以访问页面
- // 因此这里要拦截所有的路由,校验用户是否登录
- router.beforeEach((to, from, next) => {
- // 无论什么情况下 都要确保next被调用一次
- const token = localStorage.getItem('token');
- if (token) {
- // 说明登录过
- if (to.name === 'login') {
- // 如果登录过并且还是去登录页面, 此时就中断当前导航,并重新导航到主页
- return next('/');
- }
- next(); // 放行
- } else {
- // 就没有登录过
- if (to.name === 'login') return next();
- // 如果没有登录,同时 你去的页面还不是登录页面
- // 此时 强制你 去登录页面
- next({ name: 'login' });
- }
- });
- export default router;
|