vue 前端使用beforeRouteEnter也能实现登陆拦截,超简单

本文介绍如何在Vue项目中使用beforeRouteEnter钩子函数实现登录状态检查,确保未登录用户不能访问受保护的页面。通过在main.vue中设置路由守卫,检查sessionStorage中的用户名,若未登录则跳转至登录页并给出警告提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

beforeRouteEnter(to, from, next):进入路由之前执行的函数,写在main.vue里实现登陆拦截。

1、首先在登录接口请求成功后,将后台返回的用户名存到sessionStorage里
2、在main.vue里使用钩子函数beforeRouteEnter(to, from, next)

beforeRouteEnter(to, from, next) {    
      if(sessionStorage.getItem("username")) {     //如果sessionstorage里存了用户名,则表示已登录
        next(true);
      }else {
        next(vm => {    // 通过 `vm` 访问组件实例 ,直接用this是有指向问题的   
          vm.$router.push('/');
          vm.$message({       //这里是elementUI的message提示,按自己需求来写就行
            message: '请先登录!',
            type: 'warning'
          });
        })

      }
    },
引用提到,在执行路由钩子函数beforeRouteEnter时,组件还没有被创建出来,因此在该函数内部,this是undefined。我们可以通过next函数获取组件的实例对象。引用中的例子展示了在beforeRouteEnter中如何获取组件实例。通过将next函数的参数设置为一个回调函数,该回调函数的参数即为组件的实例对象。在这个例子中,可以通过回调函数中的vm参数来访问组件实例对象。 引用提到了一个具体的应用场景,在main.vue使用beforeRouteEnter钩子函数进行路由拦截和处理。在这个例子中,通过访问sessionStorage里是否存储了用户名来判断用户是否已登录。如果已登录,则继续执行下一个路由钩子函数;如果未登录,则通过next函数跳转到登录页面,并给出提示信息。 综上所述,beforeRouteEnter钩子函数可以用于在路由进入前进行拦截和处理。在该钩子函数中,可以通过next函数获取组件实例对象,从而进行进一步操作。123 #### 引用[.reference_title] - *1* [vue组件的路由钩子函数beforeRouteEnter,局部拦截](https://blog.csdn.net/weixin_44139784/article/details/104217036)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *2* [vue 前端使用beforeRouteEnter也能实现登陆拦截简单](https://blog.csdn.net/weixin_43842567/article/details/99679224)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [vue路由(十二)路由独享守卫beforeEnter和页面内组件路由守卫:beforeRouteEnter,beforeRouteLeave,...](https://blog.csdn.net/jieweiwujie/article/details/126834488)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值