【问题标题】:What's the right way to use tokens for REST APIs?将令牌用于 REST API 的正确方法是什么?
【发布时间】:2021-05-18 19:44:03
【问题描述】:

我需要使用令牌访问 REST API。 我可以使用一个端点创建一个在 1 小时内过期的令牌,然后使用该令牌在另一个端点获取一些数据。

我需要每天多次调用第二个端点,我可以创建一个令牌,然后每次都获取数据,但这感觉很愚蠢,所以我想知道这样做的正确方法是什么。

我是否应该存储令牌和到期时间,然后重复使用它,直到我知道它已过期,然后才能获得新令牌,或者我应该如何去做?我以前使用过的唯一令牌是不会过期的,所以我不太确定该怎么做。

【问题讨论】:

  • 你看过 OAuth2 吗?
  • 是的。我了解它应该如何工作的基础知识,并且我知道如何让它为我需要的任何东西工作。只是不想做错事(比如每次都创建令牌而不是刷新它们或类似的东西)

标签: api rest token


【解决方案1】:

我将在下面实现伪代码逻辑:

1/a/ 检查如果 token != Null?如果为真,请转到 3/
1/b/ 如果为假,token==Null,转至 2/

2/ getToken() {请求新令牌},成功获取新令牌后调用 3/。

3/ queryAPI(token) {查询 REST API}如果令牌过期,您将收到错误 401(有时是 400 或 403,当人们未能发回正确的错误代码时,请使用您的 API 进行测试),使用 try catch,清除(删除)当前令牌,然后转到 2/。如果代码 200 转到 4/

4/???

5/ 利润

这样你就不需要自己检查token是否过期了,API Endpoint会告诉你

【讨论】:

  • 好的,谢谢。这似乎很容易。而且我想这是有道理的,在遇到错误之前不得不尝试使用它仍然感觉有点奇怪。这是执行此操作的“正确方法”还是只是一种可行的简单方法?
  • 我会说一种简单的方法,如果您不受对 API 端点的查询数量的限制,也是正确的方法
  • 请注意,如果端点需要很长时间才能返回错误 401,您可能希望通过与当前时间戳进行比较来检查令牌过期时间,但是您必须小心时区。
  • 并且可以肯定的是,我通常不会做任何事情来清理旧令牌,它们只是过期并从系统中消失,对吧? (我认为无论如何我都无法删除它们,但只是想我会问一下,以防我弄错了)
  • 这取决于颁发您的令牌的身份验证服务器,如果他们有良好的安全策略,他们应该最多在 24 小时内过期,但我不能保证这一点,这取决于他们的设置
猜你喜欢
  • 2016-09-12
  • 1970-01-01
  • 2016-04-03
  • 2020-06-30
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多