【问题标题】:Generating Firebase Auth Tokens in Rails在 Rails 中生成 Firebase 身份验证令牌
【发布时间】:2014-08-20 21:16:10
【问题描述】:

我正在尝试为我的 Firebase 设置一些简单的安全规则(本质上,任何授权用户都可以读/写),我将其与使用 Devise 进行用户身份验证的 Rails 应用程序一起使用。但是,我无法理解生成令牌的过程是如何工作的。

我在这里找到了 Ruby gem:

https://github.com/firebase/firebase-token-generator-ruby

但是,我不确定应该将这段 Ruby 代码的 sn-p 放在哪里:

require "firebase_token_generator"

arbitraryAuthPayload = {:auth_data => "foo", :other_auth_data => "bar"}

generator = Firebase::FirebaseTokenGenerator.new("<YOUR_FIREBASE_SECRET>")
token = generator.create_token(arbitraryAuthPayload)

我是否只是将它与 user_id 的变量一起放入初始化程序中?

另外,我看到令牌会在 24 小时后过期。这是否意味着这个令牌生成器会自动为每个带有过期令牌的客户端生成一个新令牌?

谢谢

【问题讨论】:

  • 听起来你在问如何构建 ruby​​ 代码。这不完全在你的哲学难题的范围内吗?把它放在你想创建令牌的任何地方。我认为如果不完全了解您的应用程序,我们就不能在这里提供建议。关于到期:更新它们是你的工作;没有自动;在此处查看.info/authenticated and presence management 以获得帮助。
  • 嗯,所以如果我使用的是 Devise,那么它应该在每次用户使用 Devise 登录时生成一个令牌,对吗?这是否意味着它应该放在一个设计文件中?
  • 客户端是否直接连接到 Firebase?还是通过 ruby​​ 后端进行读/写?
  • 其实两者都有。我有一个或两个通过模型启动的写入,但其余的都在客户端。基本上,我只是想确保没有任何使用我的 firebase url 的随机人可以读取/写入数据(因为它直接暴露在视图中),因为这真的会搞砸(而且还有一些敏感信息,比如我的位置数据)正在流式传输)。我知道只能做很多事情来缓解这种情况,但至少只接受来自登录用户的读/写请求(通过设计)可能会有很长的路要走......除非那里有更好的解决方案。

标签: ruby-on-rails ruby-on-rails-4 firebase firebase-security


【解决方案1】:

如果客户端需要直接从 Firebase 读取/写入,他们将需要先拥有该令牌以向 Firebase 进行身份验证,因此在您处理用户身份验证/初始化的任何地方生成一个令牌可能是个好主意.

正如您所提到的,默认会话长度为 24 小时,因此之后他们将需要一个新令牌。您可以使用带有:expires 键的第二个选项参数指定不同的到期时间,如README 中提到的任何未来日期的create_token 方法。这样,您可以将其设置为未来 30 天,或者无论您的正常会话长度是多少,或者您可以创建一个返回有效令牌并在前端优雅地处理到期的端点。

如果 ruby​​ 服务器是唯一访问 Firebase 的设备,事情会简单一些 - 您只需创建一次服务器令牌并允许它对整个 Firebase 进行读/写访问

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-16
    • 1970-01-01
    • 2021-09-23
    相关资源
    最近更新 更多