如果我直接进入登录页,然后在登录页输入其他页面url,拦截是成功的。
但是如果我第一次没有进入登录页, 直接在url地址栏输入历史记录,进入里面的需要拦截的页面 居然可以直接进入
求解决 ,相关代码如下:
router.beforeEach((to, from, next) => {
if (to.matched.some(record => record.meta.requireAuth)) { // 判断该路由是否需要登录权限,能检测出带参数的路由
if (sessionStorage.getItem(‘sender’)) { // 通过vuex state获取当前的token是否存在
next()
} else {
next({
path: ‘/’,
query: {redirect: to.fullPath} // 将跳转的路由path作为参数,登录成功后跳转到该路由
})
}
} else {
next()
}
})
index.js:
export default new Router({
routes: [{
path: ‘/’,
name: ‘login’,
component: Login,
meta: { requireAuth: false // 添加该字段,表示进入这个路由是需要登录的
}
}, {
path: ‘/main’,
name: ‘main’,
meta: { requireAuth: true
},
component: Main,
children: [
{ path: ‘/share’,
meta: { requireAuth: true
},
component: Share }
]
}]
})