vue实现登陆后跳转到以前的页面

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

先说一下咱们须要用到的几个API:spa

1.router.currentRoute:当前的路由信息对象,咱们能够经过router.currentRoute.fullPath得到解析后的 URL,包含查询参数和 hash 的完整路径,若是要访问的页面的路由有命名(name)的话,能够经过router.currentRoute.name得到当前路由的名称。code

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

 

因为你们的代码写的都不同,我就不放我具体的实现代码,简单介绍一下思路:对象

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

//401拦截
if(status == "401"){
    router.push("/login")      
}

2.咱们能够在401拦截的时候将目标连接保存在url中:路由

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直接跳转回目标页面开发

router.push({path:decodeURIComponent(url)});
相关文章
相关标签/搜索