vue实现登录后页面跳转到之前页面

转发地址:https://www.jb51.net/article/132336.htm

在开发中我们经常遇到这样的需求,需要用户直接点击一个链接进入到一个页面,用户点击后链接后会触发401拦截返回登录界面,登录后又跳转到链接的页面而不是首页,这种问题该如何去做呢?

先说一下我们需要用到的几个API:

1.router.currentRoute:当前的路由信息对象,我们可以通过router.currentRoute.fullPath获得解析后的 URL,包含查询参数和 hash 的完整路径,如果要访问的页面的路由有命名(name)的话,可以通过router.currentRoute.name获得当前路由的名称。

2.router.replace:作用和router.push相同,不过它不会向history添加新纪录,而是替换当前的history记录。

 

由于大家的代码写的都不一样,我就不放我具体的实现代码,简单介绍一下思路:

1.用户点开链接后,跳转到的目标的路由页面,然后触发401拦截器,返回登录页面:

?

1

2

3

4

//401拦截

if(status == "401"){

  router.push("/login")  

}

2.我们可以在401拦截的时候将目标链接保存在url中:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

if (status == 401) {

   //判断当前的路由是否是目标路由

   if(router.currentRoute.name == "target"){

    //跳转回login路由,并把目标路由的url路径保存在login的query中

    router.replace({

     name:"login",

     query: {redirect: router.currentRoute.fullPath}

    })

   }else{

    /* 普通401拦截直接返回到登录页面 */

    router.push('/login');

   }

  }

3.点击登录后使用url上保存的query直接跳转回目标页面

?

1

router.push({path:decodeURIComponent(url)});

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值