Vuejs2 在每个路由之前验证访问jwt令牌,如果无效,请在vue cli中注销
我有一些警卫在每个路由之前检查访问令牌,但它不工作,在控制台中,我从令牌验证器得到“拒绝访问!未授权用户”,但它什么也不做。。如果令牌无效或过期,我想注销并销毁令牌并重定向到登录页面。。请参阅下面的代码。我是新来的,我从零开始学习,所以。。欢迎任何解决方案。谢谢大家 路由器.jsVuejs2 在每个路由之前验证访问jwt令牌,如果无效,请在vue cli中注销,vuejs2,vuex,vue-cli,Vuejs2,Vuex,Vue Cli,我有一些警卫在每个路由之前检查访问令牌,但它不工作,在控制台中,我从令牌验证器得到“拒绝访问!未授权用户”,但它什么也不做。。如果令牌无效或过期,我想注销并销毁令牌并重定向到登录页面。。请参阅下面的代码。我是新来的,我从零开始学习,所以。。欢迎任何解决方案。谢谢大家 路由器.js router.beforeEach((to, from, next) => { const publicPages = [ '/pages/login', '/pages/regist
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')
// trying to access a restricted page + not logged in
// redirect to login page
if (authRequired && !loggedIn) {
next('/pages/login')
} else {
next()
}
})
const guard = function (to, from, next) {
// check for valid auth token
axios.get('http://localhost:8081/api/users/checkAuthToken').then(response => {
console.log(response)
// Token is valid, so continue
next()
}).catch(error => {
// There was an error so redirect
console.log(error)
window.location.href = '/pages/login'
localStorage.removeItem('userInfo')
localStorage.removeItem('accessToken')
})
}
checkAuthToken代码:
checktkn: (req, res) => {
let token = localStorage.getItem('accessToken')
if (token) {
// Remove Bearer from string
token = token.slice(7)
sign.verify(token, 'qwe1234', (err, decoded) => {
if (err) {
return res.json({
success: 0,
message: 'Invalid Token...'
})
} else {
req.decoded = decoded
}
})
} else {
return res.json({
success: 0,
message: 'Access Denied! Unauthorized User'
})
}
}
当令牌无效时,尝试使用
res.status(401)
而不是res.json
,这样,当令牌无效时,后端会以http错误响应,axios调用中的catch
将有意义。现在axios总是得到200个响应,并且从不输入捕获
块。事情是,什么时候有效,我不知道;i don’我不知道为什么它说我没有访问权限可能是因为您在req.decoded=decoded
之后没有响应客户端,请在此处添加res.json(“有效令牌”)
。。。在每次调用res.status
或res.json
后添加.end()
:res.json(“有效令牌”).end()
仍不工作。。如果你是善良的,你能给我举个代码的例子吗?