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


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

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

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

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

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

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

    //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)});
  • 相关阅读:
    windows下postgreSQL安装与启动
    Map、Set、List区别
    责任链模式实战
    Java的URL类(二)
    linux 之分区和文件系统
    linux 之网络命令
    linux 之用户管理
    linux 权限之acl
    我的hadoop学习之路
    Hadoop 学习之Docker
  • 原文地址:https://www.cnblogs.com/caideyipi/p/8227966.html
Copyright © 2020-2023  润新知