vue受權頁面登錄以後返回以前的頁面

import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
import home from "@/pages/home"
import mine from "@/pages/mine"
import login from '@/pages/login'
import register from '@/pages/register'

vue

const router = new Router({
mode: 'history',
routes: [{
path: '/',
name: 'home',
component: home,
meta:{
homePages:true
}
},
{
path:'/home',
component:home,
meta:{
homePages:true
}
},
{
path:"/mine",
name:"mime",
component:mine,
meta:{
requiresAuth:false
}
},
{
path: '/login',
name: 'login',
component: login,
meta:{
requiresAuth:true
}
},
{
path: '/register',
name: 'register',
component: register,
meta:{
requiresAuth:true
}
},
]
});vue-router

router.beforeEach((to, from ,next) => {
const token = localStorage.getItem("token")
if(to.matched.some(record => record.meta.requireAuth || record.meta.homePages)){
//路由元信息requireAuth:true,或者homePages:true,則不作登陸校驗
next()
}else{
if(token){//判斷用戶是否登陸
if(Object.keys(from.query).length === 0){//判斷路由來源是否有query,處理不是目的跳轉的狀況
next()
}else{
let redirect = from.query.redirect//若是來源路由有query
if(to.path === redirect){//這行是解決next無限循環的問題
next()
}else{
next({path:redirect})//跳轉到目的路由
}
}
}else{
if(to.path==="/login"){
next()
}else{
next({
path:"/login",
query: {redirect: to.fullPath}//將目的路由地址存入login的query中
})
}
}
}
return
})
export default router;ui

相關文章
相關標籤/搜索