2

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

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

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

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

4

2 回答 2

0

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

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

于 2013-05-10T13:47:06.060 回答
0

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

于 2013-05-03T06:09:09.087 回答