【问题标题】:The best way to store a JWT in ruby在 ruby​​ 中存储 JWT 的最佳方法
【发布时间】:2021-12-22 04:40:53
【问题描述】:

我目前正在将我们的系统与外部 api 集成。我正在使用 httparty 来促进集成。

当我使用提供给我们 JWT 的 external-api 进行身份验证时,是否有存储此 JWT 以供将来在 ruby​​ 中的请求的最佳做法?

【问题讨论】:

  • 如果您使用数据库,为什么不将其存储在数据库中?

标签: ruby api authentication jwt


【解决方案1】:

Thew JWT Ruby Gem 应该是您实现 Ruby 的首选。还有一些其他的宝石。有关 JWT 的更多信息,您可以参考gem's documentationhere

关于存储 JWT 的最佳实践,它实际上取决于您的用例,但对于您的情况,如果您是 JWT 有一个典型的过期时间,听起来您会想要使用临时缓存类型存储,例如 Redis .想法是,在身份验证之后,您将令牌写入临时存储,如果您使用的是 Redis,它可能看起来像这样。

require 'redis'


my_jwt_token = call_some_api_to_get_token

redis = Redis.new (
    :host => 'hostname',
    :port => port,
    :password => 'password')

token_expires_in_seconds = 60 * 60 # set expire 1 hour
redis.set('my_jwt_token', my_jwt_token, ex: token_expires_in_seconds)

my_api_client.call('some_endpoint', jwt_token: redis.get('my_jwt_token"))

在我的示例中,我假设您有一个带有调用方法的客户端对象,该方法采用端点和选项哈希。但这应该让您对这里的方法有一个基本的了解。

【讨论】:

  • 我认为 OP 还问了其他问题。他收到了 JWT,但不知道在哪里存储它。
  • 是的,没错
  • @BrandonTeixeira 看看我更新的答案是否有帮助。
猜你喜欢
  • 2021-01-31
  • 1970-01-01
  • 2021-05-27
  • 2021-11-20
  • 2014-05-20
  • 2021-11-03
  • 2021-06-19
  • 2015-12-03
  • 2012-07-01
相关资源
最近更新 更多