未登录拦截和登陆后直接跳转到当时想要跳的页面去

本文介绍如何在Vue.js应用中实现未登录时的页面拦截,并在登录成功后根据查询参数(query)跳转回原始目标页面。通过打印路由器实例获取query字段,记录用户尝试访问的页面,如center页面。在登录页面成功授权后,利用该信息自动跳转到用户最初的目的地。

原理:运用打印this.router 然后获取里面的query字段
query字段:记录从哪儿跳转来的
(例如:我这里想要跳转到center页面去,但是这个页面需要登录授权才可以跳转过去,没有登录的话就会直接返回登录页面,query字段的话就可以记录到我是从center页面跳转过来的)
可以实现的功能:
应用获取到的query字段,我可以在登录成功后直接跳转到我想去的center页面

this.$router.push(this.$router.query.redierct)

代码如下 我这里路由配置是单独放在一个文件下面
路由写法:

{
        path:'/center',
        component:Center,
        meta:{
            iskey:true
        }
  },

路由拦截:
import Vue from ‘vue’
import VueRouter from ‘vue-router’
import routes from ‘./routes’

Vue.use(VueRouter)//注册路由插件

const router = new VueRouter({
mode: ‘hash’,
base: process.env.BASE_URL,
routes
})
//路由拦截(守卫)
//from是跳转前的路由(从哪儿来)
//to是跳转后的页面路由(到哪儿去
//next是必须要执行的,加上next路由才会跳转(next()允许跳转)

router.beforeEach((to,from,next) => {
   console.log(to)
   if(to.meta.iskey){//to.meta.iskey某几个需要授权的路由
      //判断本地储存中是否有路由
      if(localStorage.getItem('token')){
        next()//有token的话就继续执行
      }else{
        //next('/login')//没有token的话就强制跳转到login页面
        next({
          path:'login',
          query:{redirect:to.fullPath}//redirect自定义的
        })//query:{redirect:to.fullPath}记录从哪儿跳转来的
      }
   }else{
     next()
   }
})
export default router

登录页面:

<template>
    <div>
        login
        <button @click="handLogin">登录</button>
    </div>
</template>
<script>
export default {
    data(){
        return{
            
        }
    },
    methods:{
        handLogin(){
            setTimeout(() => {
                localStorage.setItem('token','后端返回的token字段')
                //this.$router.back()//back方法   返回到哪儿去
                //获取query字段 打印this.$router
                //console.log(this.$router.query.redierct)
                //登陆了跳转到到当时想要跳的页面去
                this.$router.push(this.$router.query.redierct)
            }, 0);
        }
    }
}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值