情缘电影网,五个坚持,景德镇瓷都信息港
在开发中我们经常遇到这样的需求,需要用户直接点击一个链接进入到一个页面,用户点击后链接后会触发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)});
以上就是我们分享的功能实现代码,感谢你对移动技术网的支持。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
VUE+elementui组件在table-cell单元格中绘制微型echarts图
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
vue 路由懒加载中给 Webpack Chunks 命名的方法
网友评论