全局守卫-路由前置守卫(在路由跳转之前)
// 全局守卫 前置守卫(在路由跳转之前)
router.beforeEach(async (to, from, next) => {
// console.log(to, from, next)
// to 获取到要跳转的路由
// from 从哪个路由来
// next 执行函数 执行下一步 next() next('/login')跳转到指定的
// 判断用户是否登录
let token = store.state.user.token
let username = store.state.user.userInfo.name
if (token) {
// 已经登录了不能去login
if (to.path == '/login') {
return next('/');
} else {
// 已经登录
// 没有用户信息
if (!username) {
try {
// 获取用户信息成功
await store.dispatch('userInfo')
next();
} catch (error) {
// alert(error.message);
// token 过期了 获取不到用户信息,重新登录
// 清除token
await store.dispatch('userLogout')
next('/login')
}
} else {
next();
}
}
} else {
// 未登录
next();
}
})
免责申明:
1. 本站所有教程、文章或资源分享目的仅供大家学习和交流!
2. 如有无法查看或链接失效,麻烦请报告联系管理员处理!
3. 本站无法保证资源或其时效性,恕不接受任何提问。
4. 在本站下载的源码严禁杜绝任何形式的正式商业用途,请去程序官方购买。 所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,并不承担任何法律责任,如果对您的版权或者利益造成损害,请提供相应的资质证明,我们将于3个工作日内予以删除。