当前位置: 首页 > 知识库问答 >
问题:

我应该在哪里存储 JWT 令牌?

梁研
2023-03-14

我正在使用vue.js和vuex开发一个应用程序,它使用JWT令牌对JSON API服务器进行身份验证。所以我想知道存放JWT代币的最佳做法是什么?

如果我将其存储在vuex商店中,则页面刷新后它会丢失,因此用户需要再次登录,这不是很方便。

如果我将其存储在浏览器的本地存储中,它会在下次登录之前被弃用,然后假设身份验证令牌的组件会混淆。我不知道如何处理这个问题。

感谢你对此的暗示。

共有2个答案

林夕
2023-03-14

如果我将其存储在浏览器的本地存储中,它会在下次登录之前被弃用,然后假设身份验证令牌的组件会混淆。我不知道如何处理这个问题。

这不是真的,local存储信息是按文档来源保存的。应用程序有责任检查令牌是否仍然可用(未过期),如果不将他重定向到登录页面。

您应该将过期时间延长到重新登录的合理时间,并且应该考虑一个合适的算法来扩展他的JWT令牌。e、 g每次用户向服务器发出请求,剩下1小时,您可以增加1天的登录时间。

能帅
2023-03-14

下面是我使用axis库的react项目的快照,在那里我遇到了类似的问题。当服务器的响应是401(未经身份验证)时,我使用另一个没有过期日期的令牌(refreshToken)请求了一个新的JWT令牌

axios.interceptors.response.use(
    ok => ok,
    err => {
        if(err.response.status === 401) {
            return axios
                    .get('/api/oauth/token/refresh', {
                        headers: {'Authorization': `Bearer ${localStorage.getItem('refreshToken') }`}
                    })
                    .then(({data}) => {
                        // in data is new access token
                        err.config.headers['Authorization']=`Bearer ${data.token}`;
                        return axios(err.config)
                    });

        } 

        throw err
    }
);
 类似资料:
  • 我正在实现一个需要身份验证的REST服务。我正在使用JWT。 现在,Android应用程序在登录时发送一个请求,获得一个令牌,并且必须在每个后续请求的头中发送令牌。 我的问题是,如何存储令牌,或者我应该将其存储在哪里? 共享偏好 SQLite数据库 归档 最好的做法是什么?还是我完全错了?

  • 问题内容: 我正在使用ExpressJS,Mongodb(Mogoose)构建应用程序。应用程序包含访问用户之前必须对其进行身份验证的路由。 目前,我已经编写了一个快速的中间件来做同样的事情。在这里,借助JWT令牌,我正在进行mongodb查询以检查用户是否已通过身份验证。但是感觉这可能会在我的数据库上增加不必要的请求负载。 我应该针对此特定任务集成redis吗? 会改善API性能吗?还是应该继续

  • 我熟悉Web存储API和cookies,但是我不知道存储身份验证令牌最安全的方式是什么。我想知道这是否会破坏任何第三方库。 我想要一份详尽的可用方法列表,列出每种方法的优缺点,最重要的是最好的方法(如果有的话)。

  • 半绿拇指在这里。我希望下载一些Apache Commons和Google Guava库以在Eclipse中使用。多个 Q 理想情况下,我希望它位于所有Mac / * NIX系统通用的目录中。然而,这个Q 那么我应该把第三方Java库放在哪里呢?

  • 我刚刚开始阅读JWT,我相信我理解什么是JWT代币。我对会话也相当熟悉。我相信我了解每种方法的优点和缺点。然而,有几个部分我感到困惑。 当请求受保护的资源时,您需要在每次请求时发送jwt,而不是在服务器上存储会话。但是: 1)您如何存储您的JWT令牌以及在哪里。根据我所读到的,我知道您向服务器发送身份验证请求,如果您成功进行身份验证,服务器会向您发送JWT令牌。然后你会怎么做?,你会像我在一些网站

  • 我觉得Angular对模型的使用让人困惑。Angular似乎采取的方法是,模型可以是任何你喜欢的--即。Angular不包含显式的模型类,您可以使用常规JavaScript对象作为模型。 “编辑”这个问题的第二个答案很有趣,也很接近我目前使用的。