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

使用访问令牌和刷新令牌保持身份验证

徐峰
2023-03-14

我试图弄清楚我应该如何坚持身份验证。

假设用户使用电子邮件和密码成功进行身份验证。然后服务器生成并返回两个令牌:

  • accesstoken(jwt过期15分钟)将存储在浏览器存储中
  • refreshtoken(jwt过期7天)作为安全cookie

当将访问令牌存储在本地存储(或会话存储)中时,React 应用程序将简单地检查它是否存在于存储中并继续渲染私有路由。因此,这意味着如果用户有一个无效/被盗的访问令牌,React 似乎仍然会暂时呈现私有页面(尽管没有私有内容),直到令牌被检查并失效。这是一种奇怪的行为吗?

在这种情况下,React应用程序是否应该验证

目前,我已经分配了访问令牌和刷新令牌来保护cookie,并且React中的私有路由总是在渲染私有页面之前刷新令牌。这会导致登录页面在渲染任何私有页面之前短暂闪烁,只要用户拥有有效的cookie。

我正在试图弄清楚在验证令牌时React应该呈现什么,以及是否应该在每次加载私有路由时刷新令牌

共有1个答案

居飞扬
2023-03-14

首先:不要把你的会话存储在localstorage或者sessionStorage中,总是使用服务器端的cookie来存储你的jwt。

其次,在服务器端,如果您扩展到多个节点容器,则可能需要使用 Redis,只需为此创建一个快速中间件即可。

第三,刷新令牌只应在访问令牌到期时使用,无需向服务器发送垃圾邮件以获取新的访问令牌。

 类似资料:
  • 我正在做一个项目(没有生产级别,只是为了提高我的技能),我正在使用JWT来处理身份验证。从我所读到的内容来看,仅使用JWT作为访问令牌是非常不安全的,因此我们需要刷新令牌。因此,在登录时,服务器返回一个访问令牌和一个刷新令牌(我将存储在httpOnly cookie中)。访问令牌在短时间内到期,但刷新令牌在到期时用于获取新令牌。 我的问题是,我们何时使用刷新令牌来获取新的访问令牌?是当用户想要获得

  • 我已经阅读了JWT和访问令牌和刷新令牌。我知道您必须在很短的时间(分钟)内设置访问令牌过期,并在过期时使用刷新令牌获取新的访问令牌。 我不清楚三件事: 谁检查访问令牌是否过期?客户端是否通过发送过期的访问令牌和刷新来检查并请求新的访问代码? 谁检查刷新令牌是否过期?(显然刷新令牌也需要过期,尽管需要更长的时间才能过期)。 在我看来,如果刷新令牌过期,则必须提示用户重新登录。在某些情况下(移动应用)

  • 这是我的身份验证流程: 用户登录后收到两个令牌(具有过期时间的访问令牌和没有过期时间的刷新令牌) 对于每个用户,刷新令牌存储在数据库中名为refreshTokens的json列中(这是一个数组) 在客户端,访问令牌和刷新令牌都存储在本地存储器上 当需要验证用户时,如果访问令牌过期,将使用刷新令牌创建一个新的访问令牌,并将其发送回用户并保持用户登录 当用户注销时,数据库中存储的刷新令牌(在refre

  • null 很抱歉太啰嗦了。 提前谢了。

  • 我已经创建了两个独立的项目;一个用于我的应用程序api,另一个用于我的应用程序客户端。我使用的是。NET Core2.2和Angular 7。我读过一些文章,其中有人说要使用httponly cookie。我在这方面的问题是;如何使用Azure Active Directory B2C?我只是很困惑,所以如果有人能清理一些东西,我将不胜感激。

  • 我不熟悉,它代表。我混淆了它的两个术语:访问令牌和刷新令牌。 用户注册/登录站点后,我创建和。 将刷新标记保存在数据库或cookie中。 15分钟后,用户标记访问令牌过期。 如果用户空闲2小时,我将从cookie或DB中删除刷新令牌,否则我将使用刷新令牌续订访问令牌。 有什么优化的方法可以达到这个目的吗?