全局守卫-路由前置守卫(在路由跳转之前)

// 全局守卫  前置守卫(在路由跳转之前)
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个工作日内予以删除。

学习交流联系

立即查看 了解详情