Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在rails服务器和php服务器之间共享会话_Ruby On Rails_Session_Symfony_Storage_Shared - Fatal编程技术网

Ruby on rails 在rails服务器和php服务器之间共享会话

Ruby on rails 在rails服务器和php服务器之间共享会话,ruby-on-rails,session,symfony,storage,shared,Ruby On Rails,Session,Symfony,Storage,Shared,目前我已经设置了两个服务器,每个服务器处理自己的事情,但是我想在它们之间有一个统一的登录。现在,一个门户的登录表单只是通过一个API将用户名/密码发送到Rails门户,然后它返回一个身份验证令牌,然后我们将其存储在会话中,用于将来的身份验证和API调用 因此,问题是,访问我们站点的用户必须在每个门户中登录一次,因为Ruby API不与我们的进行通信,并且Ruby端在API被ping时不会对会话执行任何操作,而是将我们发送回并验证令牌 我最初的想法是让Rails端在我们向API发送凭据时创建会话,

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

因此,问题是,访问我们站点的用户必须在每个门户中登录一次,因为Ruby API不与我们的进行通信,并且Ruby端在API被ping时不会对会话执行任何操作,而是将我们发送回并验证令牌

我最初的想法是让Rails端在我们向API发送凭据时创建会话,但显然这不起作用,因为他们无法在用户浏览器中设置会话id,或者至少我被告知这一点


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

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

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


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

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