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)});

原文地址:https://www.cnblogs.com/caideyipi/p/8227966.html

时间: 2024-08-29 11:55:51

vue实现登录后跳转到之前的页面的相关文章

VUE实现登录然后跳转到原来的页面

可以在路由里面设置需要登录的界面,判断下没有登录就跳转到登录界面,登录了就不用登录,这里用的是一个存储的 router.beforeEach((to, from, next) => { if(to.matched.some( m => m.meta.auth)){ if(sessionStorage.getItem('isLogin')){ next() }else{ next({path:'/login',query:{url: to.fullPath} }) } }else{ next()

登录后跳转回当前页

<?php // 登录后跳转回当前页 Mage::getSingleton('customer/session')->setBeforeAuthUrl(Mage::helper('core/url')->getCurrentUrl()); ?> <div>参加团购需要首先登录哦.点击 <a href="/customer/account/login/" class="light-blue">马上登录</a>

Laravel 登录后跳转回登录前浏览的页面

一.经过 Auth 中间件检查后跳转至登录页面 也就是没有通过 auth 中间件的认证检查,被 auth 中间件拦截后跳转至登录页面.这种情况下,Laravel 默认会在用户登录成功后自动跳转回登录前浏览的页面.auth 中间件是怎么做到的? 打开 auth 中间件文件: // vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php protected function authenticate(array

WordPress设置退出登录后跳转到指定页面

做网站大家都很重视用户体验,今天给大家大家带来一个WordPress改善用户体验的方法,用户退出登录直接跳转到首页或者让它跳转到我指定的位置,下面是具体的操作方法: 1.找到您目前在用的主题文件,鼎峰网络阿D这里的是wp-content/themes/twentyfourteen/,其中themes是主题文件夹,鼎峰网络阿D之前的wordpress文件结构也有提到,twentyfourteen是目前启用的主题,找到functions.php文件: 2.在functions.php文件中添加以下代

CAS—注销登录后跳转到登录页

CAS单点登出后,默认会跳到它自带的注销界面(这里建立在已部署好CAS-Server的基础上,详情见上篇文章),如下图: 对应的jsp如下目录: 1.修改cas-servlet.xml配置 打开[apache-tomcat-6.0.33\webapps\cas\WEB-INF]目录下的cas-servlet.xml 修改cas-servlet.xml文件的bean的id为logoutController下的p:followServiceRedirects属性为"true",如下图: 2

rails登录后跳转到登录前的路径

# 重定向到存储的地址或默认地址 def redirect_back_or(default) redirect_to(session[:forwarding_url] || default) session.delete(:forwarding_url) end # 存储以后需要的地址 def store_location session[:forwarding_url] = request.url if request.get? end #判断是否登录,否,则存储需要的地址 def signe

flutter 登录后跳转到根路由

flutter 登录以后  会有返回箭头显示 因为  路由的切换导致不是路由的第一个页面,解决办法清空路由. Navigator.of(context).pushAndRemoveUntil( new MaterialPageRoute(builder: (context) => new RootScene() ), (route) => route == null); 原文地址:https://www.cnblogs.com/wupeng88/p/10395273.html

Django里自定义用户登陆及登陆后跳转到登陆前页面的实现

因为下一步要和公司的UM帐号作集成,所以分离出登陆模块,及实现其基本功能是必不可少的. 登陆倒容易,但要实现在登陆后,跳转到登陆前的网页,且显示用户的登陆状态,花了点时间查找代码, 测试了五六种方式,终于搞定.连语法都OK啦.. login.html: {% extends "xxxx/index.html" %} {% load staticfiles %} {% block title %}用户登陆 {% endblock %} {% block heading %} <h1

0秒后跳转到另一个页面

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <meta http-equiv="Refresh" content="0; url=http://gzpc.zfyyhz.com/gzkh/(跳转到的网址)" /> </head&