Vue.js 错误:从“开始”时重定向/页面/登录名“;至/仪表板“;通过导航装置
伙计们,我不知道为什么我尝试登录时会出现此错误,登录后出现控制台错误: 错误:从“/页面/登录”转到“/仪表板”时重定向 通过导航卫士 我尝试在验证完成后点击login将我重定向到/dashboard页面,但点击login时没有任何重定向,如果再次点击login按钮,则在dashboard页面上进行重定向。有什么解决办法吗?谢谢Vue.js 错误:从“开始”时重定向/页面/登录名“;至/仪表板“;通过导航装置,vue.js,vue-router,vue-cli,Vue.js,Vue Router,Vue Cli,伙计们,我不知道为什么我尝试登录时会出现此错误,登录后出现控制台错误: 错误:从“/页面/登录”转到“/仪表板”时重定向 通过导航卫士 我尝试在验证完成后点击login将我重定向到/dashboard页面,但点击login时没有任何重定向,如果再次点击login按钮,则在dashboard页面上进行重定向。有什么解决办法吗?谢谢 loginJWT ({ commit }, payload) { return new Promise((resolve, reject) => {
loginJWT ({ commit }, payload) {
return new Promise((resolve, reject) => {
jwt.login(payload.email, payload.password)
.then(response => {
console.log(response.data)
// If there's user data in response
if (response.data.userDetails) {
// Navigate User to homepage
router.push(router.currentRoute.query.to || '/') // <- Here is the redirect after login
// Set accessToken
localStorage.setItem('accessToken', response.data.accessToken)
// Update user details
commit('UPDATE_USER_INFO', response.data.userDetails, {root: true})
// Set bearer token in axios
commit('SET_BEARER', response.data.accessToken)
resolve(response)
} else {
reject({message: 'Wrong Email or Password'})
}
})
.catch(error => { reject(error) })
})
}
以及在每个路由之后验证令牌的保护代码:
const guard = function (to, from, next) {
// check for valid auth token
const token = localStorage.getItem('accessToken')
axios.post('http://localhost:8081/api/users/checkAuthToken', {tokn: token})
.then(function (response) {
if (response.status === 200) {
next()
}
}).catch(function (error) {
if (error.response && error.response.status === 401) {
alert('access neautorizat')
next('/pages/login')
localStorage.removeItem('userInfo')
localStorage.removeItem('accessToken')
}
})
}
在每个代码之前:
router.beforeEach((to, from, next) => {
const publicPages = [
'/pages/login',
'/pages/register',
'/pages/forgot-password',
'/pages/comingsoon',
'/pages/error-404',
'/pages/error-500',
'/pages/not-authorized',
'/pages/maintenance',
'/callback'
]
const authRequired = !publicPages.includes(to.path)
const loggedIn = localStorage.getItem('accessToken')
if (authRequired && !loggedIn) {
return next('/pages/login')
}
return next()
})
第一次设置accessToken,最后一次将用户导航到主页这就是问题所在,我必须将重定向放在token访问之后,谢谢
router.beforeEach((to, from, next) => {
const publicPages = [
'/pages/login',
'/pages/register',
'/pages/forgot-password',
'/pages/comingsoon',
'/pages/error-404',
'/pages/error-500',
'/pages/not-authorized',
'/pages/maintenance',
'/callback'
]
const authRequired = !publicPages.includes(to.path)
const loggedIn = localStorage.getItem('accessToken')
if (authRequired && !loggedIn) {
return next('/pages/login')
}
return next()
})