【问题标题】:Sharing session between a rails server and a php server在 Rails 服务器和 php 服务器之间共享会话
【发布时间】:2013-05-02 14:03:28
【问题描述】:

目前我设置了两台服务器,每台都处理自己的事情,但我希望它们之间有一个统一的登录。现在,一个门户的登录表单只是通过 API 将用户名/密码发送到 Rails 门户,然后发送回一个身份验证令牌,然后我们将其存储在会话中并用于未来的身份验证和 API 调用。

所以问题变成了访问我们网站的用户必须在每个门户中登录一次,因为 Ruby API 不与我们的通信,并且当 API 被 ping 时,Ruby 端不会对会话做任何事情,但是发回给我们并验证令牌。

我最初的想法是在我们将凭据发送到 API 时让 Rails 端创建会话,但显然这行不通,因为他们无法在用户浏览器中设置会话 ID,或者在至少我是这么说的。

如果 Ruby 端转而使用数据库进行会话存储,这会缓解这个问题吗?基本上,我想为此保留 Ruby 方面的大部分更改。

【问题讨论】:

    标签: ruby-on-rails session symfony storage shared


    【解决方案1】:

    我已经在 Ruby on rails 和 PHP 之间使用 memcache 概念实现了会话共享。我在这方面取得了成功。如果您熟悉 memcache 概念,那么它将对您有用。如果您需要任何帮助,我可以与您分享。

    【讨论】:

    • 有什么原因不能进数据库吗?我的问题是我对 Rails 不太熟悉,但我认为它能够轻松切换到数据库进行会话。 Symfony2 是我们的 PHP 端,它可以轻松地将数据库用于自己的会话。但在这种特殊情况下,我们甚至不需要“共享”会话,因为唯一需要发生的事情就是某种跨站点登录。我假设如果 Rails 使用数据库进行会话,那么我们只需将凭据发送到 API 并且 Ruby 端可以让用户登录
    • 是的。你的猜测是正确的。 Rails 会话可以存储到数据库中。您只需要像往常一样创建一个用于会话存储的表,并且您可以轻松地从中获取会话数据。在这里,我的问题是我不熟悉 symfony2。只有我熟悉核心 php。无论如何,您可以将 Rails 会话存储在数据库中
    【解决方案2】:

    我们最终走了一条略有不同的路线。基本上,每一方都在数据库中查找身份验证令牌,然后我们通过每个链接上的查询字符串将其传递给另一方。例如,如果用户在 PHP 端登录,Ruby 端通过 API 接收用户名和密码,创建身份验证令牌并更新数据库,然后发回令牌。然后 PHP 端将该令牌存储在会话中,并通过查询字符串 (?authToken=blahblah) 将其发送回 Ruby 端,Ruby 端始终在监听它们。如果它看到 auth 令牌,它会检查数据库以确保匹配,如果有,则用户在 Rails 会话中进行身份验证。

    相反,Ruby 端的登录表单只是更新数据库中的 auth 令牌,指向 PHP 端的链接也传递 auth 令牌。该方进行相同的检查,并在匹配的情况下进行身份验证。

    【讨论】:

      猜你喜欢
      • 2011-08-20
      • 2012-09-17
      • 2017-08-10
      • 1970-01-01
      • 2014-04-16
      • 2018-04-03
      • 1970-01-01
      • 2016-05-03
      • 1970-01-01
      相关资源
      最近更新 更多