Ruby on rails 在Rails中生成Firebase身份验证令牌

Ruby on rails 在Rails中生成Firebase身份验证令牌,ruby-on-rails,ruby-on-rails-4,firebase,firebase-security,Ruby On Rails,Ruby On Rails 4,Firebase,Firebase Security,我正在尝试为我的Firebase设置一些简单的安全规则(基本上,任何授权用户都可以读/写),我正在将这些规则用于使用Desive进行用户身份验证的Rails应用程序。然而,我很难理解生成令牌的过程是如何工作的 我在这里找到了红宝石: 但是,我不确定我应该把这段Ruby代码放在哪里: require "firebase_token_generator" arbitraryAuthPayload = {:auth_data => "foo", :other_auth_data =>

我正在尝试为我的Firebase设置一些简单的安全规则(基本上,任何授权用户都可以读/写),我正在将这些规则用于使用Desive进行用户身份验证的Rails应用程序。然而,我很难理解生成令牌的过程是如何工作的

我在这里找到了红宝石:

但是,我不确定我应该把这段Ruby代码放在哪里:

require "firebase_token_generator"

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

generator = Firebase::FirebaseTokenGenerator.new("<YOUR_FIREBASE_SECRET>")
token = generator.create_token(arbitraryAuthPayload)
需要“firebase\u令牌\u生成器”
ArbiraryAuthPayload={:auth_data=>“foo”,:other_auth_data=>“bar”}
生成器=Firebase::FirebaseTokenGenerator.new(“”)
令牌=生成器。创建令牌(任意AuthPayload)
我是不是把它和一个user_id变量放在一个初始值设定项中

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


谢谢

如果客户端需要直接从Firebase读/写,他们需要先拥有该令牌才能对Firebase进行身份验证,因此无论您在何处处理用户身份验证/初始化,最好生成令牌

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


如果ruby服务器是访问Firebase的唯一工具,那么事情就简单多了——您只需创建一次服务器令牌,并允许它对整个Firebase进行读/写访问

听起来您在问如何构造ruby代码。这不完全是你的哲学难题吗?将其放在您想要创建令牌的任何位置。我不认为在不完全了解你的应用程序的情况下,我们可以在这里提供建议。关于有效期:你的工作是更新它们;没有自动控制;在这里查看一些帮助。嗯,如果我使用Desive,那么每次用户使用Desive登录时它都应该生成一个令牌,对吗?这是否意味着它应该放在设计文件中?客户端是否直接连接到Firebase?还是通过ruby后端进行读/写操作?实际上两者都有。我有一个或两个写操作是通过模型启动的,但其余的写操作都在客户端。基本上,我只是想确保没有任何随机的人可以使用我的firebase url读/写数据(因为它在视图中是公开的),因为这可能会把事情搞砸(还有一些敏感信息,比如我正在传输的位置数据)。我知道,要缓解这一问题,我们只能做很多事情,但至少只接受登录用户(通过Desive)的读/写请求可能会有很大的帮助……除非有更好的解决方案。