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

React节点中的JWT刷新令牌

罗昱
2023-03-14

在一个小项目上工作并使用jwt令牌进行了一些身份验证,整个过程如下所示:

    < li >在auth/register上生成jwt令牌以及刷新令牌 < li >使用令牌发出请求 < li >如果令牌过期,我将查询请求用户及其refreshToken,比较其当前请求refreshToken和数据库令牌 < li >如果令牌匹配,我将生成一个新令牌和一个新刷新令牌。

整个问题是第五步,假设我向“/me/friends”发出请求,在我的令牌到期的过程中,我会用我的refreshToken创建一个新的令牌,但我不知道我应该如何在“me/friendes”api调用中将令牌返回到前端,因为它返回了一组特定字段,而令牌与它无关。我只是想不通这是怎么回事,有人能帮我吗?

共有1个答案

锺星腾
2023-03-14

您如何在客户端存储令牌?最简单的方法是将其存储在cookie中。在这种情况下,步骤5就变成了用请求设置更新的cookie。

另一种选择是从您的endpoint返回401-Unauthorized,然后在客户端,您可以通过尝试手动刷新令牌,然后重试请求来处理401状态代码。

但我认为,如果您不使用某种身份验证中间件,如果auth过期,该中间件根本不会到达endpoint,则选项1更可取。

 类似资料:
  • 我正在构建一个移动应用程序,并且正在使用JWT进行身份验证。 最好的方法似乎是将JWT访问令牌与刷新令牌配对,这样我就可以根据需要频繁地使访问令牌过期。 刷新令牌是什么样子的?是随机字符串吗?那串加密了吗?是另一个JWT吗? 刷新令牌将存储在用户模型的数据库中以便访问,对吗?在这种情况下似乎应该加密 在用户登录后,我是否会将刷新令牌发送回,然后让客户端访问单独的路由来检索访问令牌?

  • 登录时,将从服务器发送JWT访问令牌,并保存在RN中的AsyncStorage中。 现在,我希望用户保持登录5年,直到他们: > < li> 注销 管理员撤销了他们的令牌 他们在3台设备上登录,在其中一台设备上更改密码,这应该从其他2台设备上注销他们,直到他们在这些设备上再次登录 丢失他们的电话,并从另一个设备登录以从所有设备注销 看起来我不得不在数据库中存储JWT令牌(我知道这不是JWT令牌的重

  • 我正在使用Tymon提供的包来处理从我的laravel后端到spa前端的Auth,我正在创建AuthController,这几乎是我从文档中获取的,只是稍微调整一下它以满足我的需要。从登录到注销以及令牌过期,一切正常。 问题是,我确实看到该控制器上有一个令牌刷新功能,如果我的猜测是正确的,那就是刷新客户端已经拥有的当前令牌。但是怎么做呢?如何处理前端上的刷新令牌?因为它是相当烦人的,每60分钟(默

  • 我正在构建一个使用JWT进行身份验证的应用程序。我开始做一些研究,但对于诸如刷新令牌和令牌存储之类的主题缺乏共识,我感到惊讶。 据我所知,JWT和OAuth是两个不同的协议,它们遵循不同的规范。 但我的问题是,对于一个没有通过第三方资源服务器如Google、Facebook等认证的应用程序,有一个刷新令牌真的有用吗?为什么不让JWT令牌像刷新令牌一样持续时间长。 另一方面,我可以看到,如本文所述,

  • 我正在努力围绕JWT身份验证进行思考。我读了很多文章和SO问题,但是其中一些已经过时了,我仍然没有得到满意的答案。 我读过这个SO问题,从JoséF.Romaniello的回答中我明白: 使用刷新令牌,客户端在旧的访问令牌过期之前请求新的访问令牌(这是正常的,预期行为) 在移动应用上,代币永不过期 同样在 auth0 上它说: 您可以请求新的访问令牌,直到刷新令牌在DenyList上。应用程序必须

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