【问题标题】:How to check JWT token validity如何检查 JWT 令牌的有效性
【发布时间】:2018-04-01 10:28:48
【问题描述】:

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

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

Vuex 中有这个常量:

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

它正在检查是否有令牌,如果没有,将其设置为 false 并重定向到登录页面。但是,如果我手动将令牌添加到我的 cookie 中,我可以从我的 vue-router 访问每条路由并查看静态数据。当然,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 中进行验证,不是吗?

【问题讨论】:

  • 验证和确认仅在服务器端进行。客户端总是有一种方法可以访问已经加载的隐藏内容。如果您的服务器端总是期望并检查 JWT,那么如果用户手动设置 token 就没有问题。他们可以看到登录状态,但他们不能使用任何东西,因为 API 调用包含无效的 JWT 信息。
  • 如果你想对未登录用户隐藏“登录状态”组件,然后将它们打包到另一个模块中,该模块在用户登录后会延迟加载。跨度>
  • 问题是用户可以在没有验证令牌的情况下继续任何 vue-route。当然,当我使用 ajax 调用时不会有数据,因为他没有验证令牌,但他仍然可以看到静态数据,我不想要它。

标签: javascript laravel vue.js lumen


【解决方案1】:

无法在本地检查您的令牌。您必须了解,您不能信任来自用户计算机的任何内容。

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

【讨论】:

    猜你喜欢
    • 2020-10-21
    • 2016-12-31
    • 1970-01-01
    • 2018-01-25
    • 2018-12-30
    • 2020-07-04
    • 1970-01-01
    • 2021-08-06
    • 2019-09-22
    相关资源
    最近更新 更多