在 ruby 中存储 JWT 的最佳方法
Posted
技术标签:
【中文标题】在 ruby 中存储 JWT 的最佳方法【英文标题】:The best way to store a JWT in ruby 【发布时间】:2021-12-22 04:40:53 【问题描述】:我目前正在将我们的系统与外部 api 集成。我正在使用 httparty 来促进集成。
当我使用提供给我们 JWT 的 external-api 进行身份验证时,是否有存储此 JWT 以供将来在 ruby 中的请求的最佳做法?
【问题讨论】:
如果您使用数据库,为什么不将其存储在数据库中? 【参考方案1】:Thew JWT Ruby Gem 应该是您实现 Ruby 的首选。还有一些其他的宝石。有关 JWT 的更多信息,您可以参考gem's documentation 或here。
关于存储 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 看看我更新的答案是否有帮助。以上是关于在 ruby 中存储 JWT 的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章
在 ASP.NET 核心中创建 JWT 是不是有更简单的方法?又名“JWT 身份验证的最佳实践?”