react router拦截
Vue登录拦截登录后继续跳转指定页⾯的操作
在开发中我们经常遇到这样的需求,需要⽤户登录后才可以访问该页⾯,如果⽤户没有登录点击该页⾯时则⾃动跳转到登录页⾯,登录后⼜跳转到链接的页⾯⽽不是⾸页,这种问题该如何去做呢?
1、在路由器router下的 index.js 的配置中,给需要拦截登录的页⾯的路由上加⼀个meta: {loginRequest: true} ,其中loginRequest 变量⾃⼰可以随意定义
2、在main.js⽂件⾥⾯添加beforeEach钩⼦函数
解释:
router.beforeEach((to, from, next) => { } 三个参数:
to:即将要进⼊的⽬标路由对象
from:当前导航正要离开的路由
next:(function函数) 调⽤next() 进⾏管道中的下⼀个钩⼦
next() ⽆参进⾏下⼀个钩⼦函数
next({ path:'/xxx' , query:{}}) 携带参数跳到xxx页⾯
3、登录页⾯login.vue,登录完成后,跳到指定页⾯或⾸页
补充知识:vue实现登录后跳转到来源路由url
sessionStorage存储from.path来源的路由url,如果不是登录或者注册就拦截跳到登录页,如果是就放⾏
router.beforeEach(function(to,from,next){
if(to.path!='/login' && to.path!='/register'){
sessionStorage.setItem('referrer',from.path) //储存来源路由
alert('请登录')
next({
path:'/login'
})
}else{
next()
}
})
登录后判断sessionStorage中是否有存储来源路由,如果有就跳转到这个路由
//获取来源页路由
var referrer = Item('referrer');
if(referrer != null){
this.$router.push(referrer)
}else {
this.$router.push('/home')
}
以上这篇Vue登录拦截登录后继续跳转指定页⾯的操作就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。