Vue路由拦截不生效是怎么回事?
我在用 Vue Router 做登录权限控制,明明写了 beforeEach 拦截,但没登录的用户还是能直接访问 /dashboard 页面,完全没被拦住。
我试过在 router.beforeEach 里加 console.log,发现根本没执行到那段逻辑。路由配置是用 createRouter 创建的,也正确引入了 router 实例到 main.js 里。
这是我的拦截代码:
router.beforeEach((to, from, next) => {
const isLoggedIn = localStorage.getItem('token')
if (to.meta.requiresAuth && !isLoggedIn) {
next('/login')
} else {
next()
}
})
而且我在路由里也加了 meta 标记:
{
path: '/dashboard',
component: Dashboard,
meta: { requiresAuth: true }
}
但就是不管用,直接输入地址就能进,到底哪里漏了?
我之前这样搞的,漏了app.use(router)的话拦截器就是摆设。