javascript - 如何检查 JWT token 有效性

标签 javascript laravel vue.js lumen

我一直在关注 this使用 lumen 和 vuejs 进行身份验证的教程。我正在使用 this库(tymon/jwt-auth)。

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

Vuex有这个常数:

const state = {
    isLogged: !!localStorage.getItem('token')
}

它正在检查是否有 token ,如果没有,将其设置为 false 并重定向到登录页面。但是如果我手动向我的 cookie 添加一个 token ,我可以从我的 vue-router 访问每条路由并查看静态数据。当然,来自 API 的数据将不可用,但如果 token 未验证(用户未登录),我不想访问此路由

我该如何处理?我是否必须每次都使用 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 中验证,不是吗?

最佳答案

不可能在本地检查您的 token 。你必须明白,你不能相信来自用户计算机的任何东西。

您需要做的是在每个路由之前发送一个 ajax 请求,以检查您的 token 是否仍然有效。

关于javascript - 如何检查 JWT token 有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49597105/

相关文章:

javascript - 如何用 JavaScript 中的 DOM 操作函数替换元素内容?

php - 参数 1 传递给 App\Http\Controllers\Auth\LoginController::authenticated()

PHP-Laravel : Raw Sql Query showing Error in controller

typescript - 提供/注入(inject)和更改注入(inject)变量

javascript - @click 事件不会与带有@blur 的元素一起触发

javascript - 滚动时 Angular 5 粘性菜单

javascript - func() => {} 和 func = () => {} 有什么区别?

javascript - 如何在html字符串中的src属性末尾附加一个值

php - 多个 AdminMiddleware 歧义

javascript - VueJS - Vuefire - TypeError : document. onSnapshot 不是函数