我有一条路线。如果用户未登录,则会将其重定向到登录页面。我正在尝试获取用户来自的路线,以便在他们登录后我可以将他们重定向回来。
这是我的路线:
{
path: '/builder/:pin?',
name: 'Builder',
component: Builder,
props: true,
meta: {
requiresAuth: true, roles: ['XXXX', 'XXXX', 'XXXX']
}
}
router.beforeEach((to, from, next) => {
// check to see if router requires auth
if (to.meta.requiresAuth) {
let user = store.getters.getUser
firebase.auth().onAuthStateChanged((user) => {
if (user) {
if(!user.emailVerified) {
next({ name: 'Login' })
store.dispatch('setLoginFeedback', {code: 'resubmit-verification', message: 'Your email is not verified'})
return
}
// get current user
let ref = db.collection('users').where('email', '==', user.email)
ref.get().then(snapshot => {
if (!snapshot.empty) {
snapshot.forEach(doc => {
this.user = doc.data()
// if no roles are set
if(!to.meta.roles) {
next()
} else if(to.meta.roles) {
const hasRole = this.user.roles.find(val => to.meta.roles.includes(val))
if (hasRole) {
next()
} else {
alert('you do not have permission to enter')
}
} else {
// next({ name: 'Dashboard' })
}
})
} else {
// no user
// if (!this.user) {
next({ name: 'Login' })
// }
}
})
} else {
next({ name: 'Login' })
}
})
} else {
// console.log('does not require auth')
next()
}
})
在我的登录组件中,我有以下代码:
beforeRouteEnter(to, from, next) {
next((vm) => {
vm.prevRoute = from;
});
console.log(to, from, next)
},
我目前在本地服务器上。当我转到 localhost:8080/builder 时,它会将我正确重定向到登录,但在控制台中。我从发件人那里得到这个
{name: null, meta: {}, path: "/", hash: "", query: {}, …}
为什么我没有在路径中找到 /builder
?
最佳答案
你可以这样做..
this.$router.back();
这将带您返回之前的路线
程序化导航| Vue 路由器 https://router.vuejs.org/guide/essentials/navigation.html
关于javascript - 获取以前的 URL 以用于重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57720081/