用户token过期后,重新登陆后,让用户返回之前的页面

闲话少说,给出我的一个解决方案

1.在响应拦截器处,判断服务器那边token过期的code码
2.用户重定向到login页面处,并携带当前页面的url当作参数
      

//这里的跳转应该是token过期后,在强制用户跳转到登陆页面时,携带一个参数(lastPath)
  window.location.replace(
      `/login?from_url=${route.currentRoute.value.fullPath}`,
);


3.在用户登陆成功后,跳转到默认首页前,判断是否携带有lastPath这个参数,
        如果有说明用户是重新登陆
        如果没有说明用户第一次登陆,给他跳转到默认的首页即可

但是又引出了另一个需求,我们希望用户如果是点击的别人的网址进入的例如(http:xxxx.com/a/b)但是用户没有权限,重登后让它去往它希望的页面,而不是默认首页

我们在路由全局守卫中进行判断

//第一重判断是防止用户在登陆页面
//第二冲if则是判断用户此时的url是不是单纯的访问网址,如果不是,说明用户是通过点击他人的链接前来访问的,此时我们就可以携带上这个url

if (!to.matched.some(item => item.name === 'Landing')) {
      // 用户通过url首次进入页面, 没有授权, 不需要强制跳转
      if (from.name === undefined) {
        // 用户进入空路由地址
        if (window.location.pathname === '/') {
          next({ name: 'Login' });
        } else {
          // 用户点击其他页面,但没有权限,强制跳转到login,并且携带希望访问的参数
          next({ name: 'Login', query: { from_url: to.fullPath } });
        }
      } else {
        resetToLogin();
      }
    } else {
      next();
    }

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值