//先在本页面存入重定向的url
data() {
return {
redirect: undefined,
}
}
//然后在watch监听属性中监听$route的变化
watch: {
$route: {
handler: function(route) {
const query = route.query
if (query) {
this.redirect = query.redirect
this.otherQuery = this.getOtherQuery(query)
}
},
immediate: true
}
},
//触发表单提交
if (valid) {
this.loading = true
Promise.all([ this.$store.dispatch('user/login', this.form)]).then(() => {
this.$message.success('登录成功!欢迎你')
setTimeout(async () => {
//跳转重定向
this.$router.push({ path: this.redirect || '/' })
this.loading = false
}, 1 * 1000)
})
.catch(() => {
this.loading = false
})
//在路由前置守卫中也要进行监控
const hasToken = getToken()
//已登录有token的情况
if (hasToken) {
const nowRouter = getNowRouter()
if (to.path === '/') {
if (nowRouter) {
next(nowRouter)
} else {
next('/problems/issue_tracking')
}
}
if (to.path !== '/') {
setNowRouter(to.fullPath)
}
if (to.path === '/login') {
// if is logged in, redirect to the home page
next({ path: '/problems/issue_tracking' })
NProgress.done()
}
} else {
//没有token
//判断是否是去login页面
if (whiteList.indexOf(to.path) !== -1) {
// in the free login whitelist, go directly
next()
} else {
// other pages that do not have permission to access are redirected to the login page.
next(`/login?redirect=${to.path}`)
NProgress.done()
}
}
在登录页实现跳转到上一次浏览的页面
于 2022-05-18 14:30:39 首次发布