46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
		
			
		
	
	
			46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| 
								 | 
							
								import Vue from "vue";
							 | 
						|||
| 
								 | 
							
								import VueRouter from "vue-router";
							 | 
						|||
| 
								 | 
							
								import index from "../views/index.vue";
							 | 
						|||
| 
								 | 
							
								Vue.use(VueRouter);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								const routes = [
							 | 
						|||
| 
								 | 
							
								  {
							 | 
						|||
| 
								 | 
							
								    path: "/",
							 | 
						|||
| 
								 | 
							
								    name: "home",
							 | 
						|||
| 
								 | 
							
								    component: index,
							 | 
						|||
| 
								 | 
							
								    beforeEnter: (to, from, next) => {
							 | 
						|||
| 
								 | 
							
								      const expires = localStorage.getItem("expires");
							 | 
						|||
| 
								 | 
							
								      const expiresTimestamp = new Date(expires).getTime();
							 | 
						|||
| 
								 | 
							
								      const now = new Date().getTime();
							 | 
						|||
| 
								 | 
							
								      if (expiresTimestamp && now > expiresTimestamp) {
							 | 
						|||
| 
								 | 
							
								        // 登录已过期,执行自动退出操作
							 | 
						|||
| 
								 | 
							
								        localStorage.removeItem("setToken");
							 | 
						|||
| 
								 | 
							
								        localStorage.removeItem("expires");
							 | 
						|||
| 
								 | 
							
								        next("/login");
							 | 
						|||
| 
								 | 
							
								      }
							 | 
						|||
| 
								 | 
							
								      const token = localStorage.getItem("setToken");
							 | 
						|||
| 
								 | 
							
								      // 在导航到/dashboard路由之前执行的操作
							 | 
						|||
| 
								 | 
							
								      if (!token) {
							 | 
						|||
| 
								 | 
							
								        next("/login"); // 如果非管理员用户访问/dashboard,则重定向到登录页面
							 | 
						|||
| 
								 | 
							
								      } else {
							 | 
						|||
| 
								 | 
							
								        next(); // 继续导航到/dashboard
							 | 
						|||
| 
								 | 
							
								      }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								  },
							 | 
						|||
| 
								 | 
							
								  {
							 | 
						|||
| 
								 | 
							
								    path: "/login",
							 | 
						|||
| 
								 | 
							
								    name: "login",
							 | 
						|||
| 
								 | 
							
								    component: () => import("@/views/login/index.vue")
							 | 
						|||
| 
								 | 
							
								  }
							 | 
						|||
| 
								 | 
							
								];
							 | 
						|||
| 
								 | 
							
								const router = new VueRouter({
							 | 
						|||
| 
								 | 
							
								  mode: "history",
							 | 
						|||
| 
								 | 
							
								  base: "/",
							 | 
						|||
| 
								 | 
							
								  routes
							 | 
						|||
| 
								 | 
							
								});
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								router.beforeEach((to, from, next) => {
							 | 
						|||
| 
								 | 
							
								  next();
							 | 
						|||
| 
								 | 
							
								});
							 | 
						|||
| 
								 | 
							
								export default router;
							 |