- 代码实现思路:
- 利用全局前置守卫
router.beforeEach
,这是在每次路由切换前都会触发的守卫。
- 在守卫中检查用户的登录状态,通常可以通过检查本地存储(如
localStorage
)或Vuex中是否存在用户登录标识(例如用户信息、token等)。
- 如果用户未登录且试图访问特定的受保护路由,将其重定向到登录页面;如果已登录,则允许通过。
- 关键代码片段:
假设我们使用
localStorage
存储登录状态,token
作为登录标识,路由定义在router/index.js
中。
import Vue from 'vue';
import Router from 'vue-router';
import Home from '@/views/Home.vue';
import Login from '@/views/Login.vue';
Vue.use(Router);
const router = new Router({
routes: [
{
path: '/home',
name: 'Home',
component: Home
},
{
path: '/login',
name: 'Login',
component: Login
}
]
});
router.beforeEach((to, from, next) => {
const token = localStorage.getItem('token');
// 需要登录才能访问的路由
const requiresAuth = ['/home'];
if (requiresAuth.includes(to.path) &&!token) {
next('/login');
} else {
next();
}
});
export default router;