【发布时间】:2019-08-30 03:20:02
【问题描述】:
我有一条路线。如果用户没有登录,它会将他们重定向到登录页面。我正在尝试获取用户来自的路线,以便在他们登录后将他们重定向回来。
这是我的路线:
{
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?
【问题讨论】:
-
您可以添加您用于重定向的代码吗?
-
@EderChrono 当然,我刚刚添加了它
标签: javascript vue.js vuejs2 vuex vue-router