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

时间:2013-05-02 14:03:29

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

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

因此问题变成访问我们网站的用户必须在每个门户网站登录一次,因为Ruby API不与我们的网站通信,并且当API被ping时,Ruby方面不会对会话做任何事情。发送给我们并使用身份验证令牌。

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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