为什么每次发送请求时刷新访问令牌是个坏主意?
Why is it a bad idea to refresh access token every time when I sent request?
我正在做 React 本机应用程序并使用 OAuth2 并在我登录我的应用程序时获取访问令牌、刷新令牌并及时过期。我在发送请求(GET,POST)时检查了我的令牌是否及时过期。如果我的令牌过期,那么我使用刷新令牌来获取新的访问令牌。我的同事告诉我,我不需要检查过期时间,只需在每次发送请求时使用刷新令牌来获取访问令牌。我知道他的方法不对,但我用他的方法会怎么样呢?为什么我每次发送请求都刷新access token不好?
因为它增加了网络往返次数并使您的应用程序比需要的速度慢,并且增加了令牌服务的负载。
这种方式存在扩展问题和糟糕的用户体验。
你的同事可能建议你这样做,这就是我总是编写这些东西的方式:
- 在每次请求时将当前访问令牌发送到 API
- 最终访问令牌将 return 401
- 然后使用刷新令牌获取新的访问令牌 + 重试 API 调用
- 最终令牌续订请求将失败并出现 invalid_grant 错误,用户必须重新登录
也就是说,您仅在访问令牌过期时刷新,而不是在每次请求时刷新。您避免依赖访问令牌过期时间,因为 APIs 可以出于多种原因拒绝令牌。
我正在做 React 本机应用程序并使用 OAuth2 并在我登录我的应用程序时获取访问令牌、刷新令牌并及时过期。我在发送请求(GET,POST)时检查了我的令牌是否及时过期。如果我的令牌过期,那么我使用刷新令牌来获取新的访问令牌。我的同事告诉我,我不需要检查过期时间,只需在每次发送请求时使用刷新令牌来获取访问令牌。我知道他的方法不对,但我用他的方法会怎么样呢?为什么我每次发送请求都刷新access token不好?
因为它增加了网络往返次数并使您的应用程序比需要的速度慢,并且增加了令牌服务的负载。
这种方式存在扩展问题和糟糕的用户体验。
你的同事可能建议你这样做,这就是我总是编写这些东西的方式:
- 在每次请求时将当前访问令牌发送到 API
- 最终访问令牌将 return 401
- 然后使用刷新令牌获取新的访问令牌 + 重试 API 调用
- 最终令牌续订请求将失败并出现 invalid_grant 错误,用户必须重新登录
也就是说,您仅在访问令牌过期时刷新,而不是在每次请求时刷新。您避免依赖访问令牌过期时间,因为 APIs 可以出于多种原因拒绝令牌。