软件教程 2025年08月6日
0 收藏 0 点赞 316 浏览 1042 个字
摘要 :

我们在使用vue-router开发前端项目时,经常需要保证有些页面不需要登录就可以访问,但有些页面必须登录后才能访问,那我们该如何才能方便地实现这样的需求呢?其实,使用……

我们在使用vue-router开发前端项目时,经常需要保证有些页面不需要登录就可以访问,但有些页面必须登录后才能访问,那我们该如何才能方便地实现这样的需求呢?其实,使用vue-router中的路由拦截可以轻松实现一些收保护的页面如果在未登录状态下被请求访问,可以直接跳转到登录页面。

我们实现如上需求只需要两个步骤:

1)在router目录下的index.js文件中创建VueRouter实例代码中,对于需要登录后才能访问的路由配置中新增meta配置,案例代码如下:

// 4、创建VueRouter实例-路由对象
const router = new VueRouter({
    // 5、配置路由
    //5.1配置路模式
    mode:"history",
    // 5.2 配置路由对象数组
    routes: [
        //登录路由
        {
            name:"Login",
            path:"/login",
            component:()=>import("@/components/Login.vue")
        },
        //主页路由
        {
            name:"Home",
            path:"/home",
            component:()=>import("@/components/Home.vue"),
            //新增meta配置
            meta:{
                //需要登录后才能访问
                requiresAuth:true
            }
        }
    ]
})

2)使用vue-router的钩子函数beforeEach实现路由拦截,我们只需要创建VueRouter实例代码后面新增如下代码:

//路由拦截
router.beforeEach((to, from, next) => {
    //判断是否是登录保护路由
    if (to.matched.some(record => record.meta.requiresAuth)) {
        //验证浏览器本地存储是否有token(或从vuex、Cookie、localStorage中获取,依据自己的存储),用于判断是否登录
        if (!sessionStorage.token) {//没有token,表示未登录,则重定向到login
            next({
                //这里是你登录页面的路由名称,或直接使用 path:'/login'
                name: 'Login',
                query: { redirect: to.fullPath }
            })
        } else {
            next()
        }
    } else {
        // 确保一定要调用 next()
        next()
    }
})

完成以上两个步骤,去测试访问/home路由如果没登录会直接重定向到/login,如果已登录,则会正常访问,在此就不做演示了。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/5994.html

管理员

相关推荐
2025-08-06

文章目录 一、Promise基础回顾 二、Promise 与 axios 结合使用场景及方法 (一)直接返回 axios …

269
2025-08-06

文章目录 一、模块初始化时的内部机制 二、常见导出写法的差异分析 (一)写法一:module.exports…

107
2025-08-06

文章目录 一、ResizeObserver详解 (一)ResizeObserver是什么 (二)ResizeObserver的基本用法 …

683
2025-08-06

文章目录 一、前期准备工作 (一)下载相关文件 (二)安装必要工具 二、处理扣子空间生成的文件…

338
2025-08-06

文章目录 一、官方文档 二、自动解包的数据类型 ref对象:无需.value即可访问 reactive对象:保持…

371
2025-08-06

文章目录 一、Hooks的工作原理 二、在if语句中使用Hook会出什么岔子? 三、React官方的Hook使用规…

843
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号