Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么每次发送请求时都刷新访问令牌是个坏主意?_Javascript_React Native_Oauth 2.0_Access Token_Refresh Token - Fatal编程技术网

Javascript 为什么每次发送请求时都刷新访问令牌是个坏主意?

Javascript 为什么每次发送请求时都刷新访问令牌是个坏主意?,javascript,react-native,oauth-2.0,access-token,refresh-token,Javascript,React Native,Oauth 2.0,Access Token,Refresh Token,我在做react本机应用程序,使用OAuth2获取访问令牌,刷新令牌,并在登录我的应用程序时及时过期。当我发送请求(GET、POST)时,我检查了我的令牌是否及时过期。如果我的令牌过期,那么我使用刷新令牌来获取新的访问令牌。我的同事告诉我,我不需要检查过期时间,只要在每次发送请求时使用刷新令牌来获取访问令牌即可。我知道他的方式不合适,但如果我用他的方式会发生什么?为什么每次发送请求时都刷新访问令牌不好?因为它会增加网络往返,使应用程序比需要的慢,并增加令牌服务的负载 这样就存在扩展问题和糟糕的用

我在做react本机应用程序,使用OAuth2获取访问令牌,刷新令牌,并在登录我的应用程序时及时过期。当我发送请求(GET、POST)时,我检查了我的令牌是否及时过期。如果我的令牌过期,那么我使用刷新令牌来获取新的访问令牌。我的同事告诉我,我不需要检查过期时间,只要在每次发送请求时使用刷新令牌来获取访问令牌即可。我知道他的方式不合适,但如果我用他的方式会发生什么?为什么每次发送请求时都刷新访问令牌不好?

因为它会增加网络往返,使应用程序比需要的慢,并增加令牌服务的负载


这样就存在扩展问题和糟糕的用户体验。

因为它增加了网络往返,使应用程序比需要的慢,并增加了令牌服务的负载


这样就存在扩展问题和糟糕的用户体验。

您的同事可能建议您这样做,这就是我一直编写这些代码的方式:

  • 在每次请求时向API发送当前访问令牌
  • 最终,访问令牌将返回401
  • 然后使用刷新令牌获取新的访问令牌并重试API调用
  • 最终,令牌续订请求将失败,并出现无效的\u grant错误,用户必须再次登录

也就是说,只有在访问令牌过期时才刷新,而不是在每个请求上。您避免依赖访问令牌到期时间,因为API可能会出于多种原因拒绝令牌。

您的同事可能建议您这样做,这就是我通常编写这些代码的方式:

  • 在每次请求时向API发送当前访问令牌
  • 最终,访问令牌将返回401
  • 然后使用刷新令牌获取新的访问令牌并重试API调用
  • 最终,令牌续订请求将失败,并出现无效的\u grant错误,用户必须再次登录

也就是说,只有在访问令牌过期时才刷新,而不是在每个请求上。您可以避免依赖访问令牌到期时间,因为API可以出于多种原因拒绝令牌。

您的观点还有一个补充,即当使用刷新令牌时,后端应该返回一个新的访问和一个新的刷新令牌。这被称为旋转刷新令牌,IETF推荐使用,因为它有助于检测令牌盗窃。您还可以阅读以查看实现详细信息。另外一点是,当使用刷新令牌时,后端应该返回一个新的访问和一个新的刷新令牌。这被称为旋转刷新令牌,IETF推荐使用,因为它有助于检测令牌盗窃。您还可以阅读以查看实现细节