Javascript 如何检查JWT令牌的有效性
我一直在按照教程使用lumen和vuejs进行身份验证。我正在使用库(tymon/jwtauth) 一切正常。我的API为我的数据处理一切,并为我的前端框架提供一个令牌。我可以登录/注销,我需要一个valide令牌来发送API请求 其中有一个常数:Javascript 如何检查JWT令牌的有效性,javascript,laravel,vue.js,lumen,Javascript,Laravel,Vue.js,Lumen,我一直在按照教程使用lumen和vuejs进行身份验证。我正在使用库(tymon/jwtauth) 一切正常。我的API为我的数据处理一切,并为我的前端框架提供一个令牌。我可以登录/注销,我需要一个valide令牌来发送API请求 其中有一个常数: const state = { isLogged: !!localStorage.getItem('token') } 它正在检查是否有令牌,如果没有,则将其设置为false并重定向到登录页面。但如果我手动将令牌添加到cookie中,我可以
const state = {
isLogged: !!localStorage.getItem('token')
}
它正在检查是否有令牌,如果没有,则将其设置为false并重定向到登录页面。但如果我手动将令牌添加到cookie中,我可以从vue路由器访问每条路由并查看静态数据。当然,API中没有可用的数据,但是如果令牌未经验证(用户未登录),我不希望访问此路由
我该怎么办?每次我都要用ajax调用检查吗?我实际上在用这个:
router.beforeEach((to, from, next) => {
const auth = store.state.auth;
if (to.name == "logout" || to.name == "login") {
next();
} else {
if (store.state.isLogged) {
next();
} else {
next('/');
}
}
})
我认为唯一的解决方案是Ajax调用,因为我们无法在vuejs中进行验证,不?不可能在本地检查您的令牌。你必须明白,你不能相信任何来自用户计算机的东西
您需要做的是在每个路由之前发送一个ajax请求,以便检查您的令牌是否仍然有效。验证和验证仅在服务器端完成。客户端总是有办法访问已经加载的隐藏内容。如果服务器端总是期望并检查JWT,那么如果用户手动设置
令牌
,就没有问题。他们可以看到登录状态,但无法使用任何内容,因为API调用包含无效的JWT信息。如果要对未登录用户隐藏“登录状态”组件,请将其打包到另一个模块中,该模块在用户登录后延迟加载。问题是,用户可以在没有valide令牌的情况下执行任何vue路由。当然,当我使用ajax调用时不会有数据,因为他没有valide令牌,但他仍然能够看到静态数据,我不想要它。