Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查JWT令牌的有效性_Javascript_Laravel_Vue.js_Lumen - Fatal编程技术网

Javascript 如何检查JWT令牌的有效性

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中,我可以

我一直在按照教程使用lumen和vuejs进行身份验证。我正在使用库(tymon/jwtauth)

一切正常。我的API为我的数据处理一切,并为我的前端框架提供一个令牌。我可以登录/注销,我需要一个valide令牌来发送API请求

其中有一个常数:

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令牌,但他仍然能够看到静态数据,我不想要它。