在Rails和Node之间共享会话数据?

3
主要问题是:我能在Node中读取Rails会话数据吗?
更多细节:
我有一个用Ruby on Rails编写的项目。它可以工作,但我想添加一些功能并最终使用NodeJS替换它。两者都在同一台服务器上运行,只是在不同的端口上。
目前,RoR将提供所有HTML文件(并继续处理现有功能),然后我将通过AJAX连接到Node服务器。 Node暂时只会提供JSON。
问题是,我如何在两者之间处理会话变量?更具体地说,我能否在Node中访问RoR的会话变量?主要是需要知道哪个用户已登录。
如果有影响的话,我正在运行Rails 2.3.5,Ruby 1.8.7和Node 0.8.17。
1个回答

2

我个人没有尝试过完全相同的内容,但是我们使用了Sinatra和Java进行了类似的操作。

关于应用程序设计方面,我不会发表评论,但是如果您不介意在Rails应用程序中使用Memcached会话存储,则是可行的。在Heroku文档中有关于如何配置Ruby应用程序与Memcached的说明。

在Node应用程序中,您可以使用Memcached客户端,例如3rd-Eden,并从Memcached访问会话变量。

您需要显式地将Rails生成的会话ID传递给Node。


所以基本上只需要将会话变量存储在数据库中,然后在RoR和Node之间传递会话ID即可?我理解得对吗?我想我应该问一下,如果RoR验证了用户,有没有更好的方法来确保Node正在与该用户一起工作? - brian h
不需要在数据库中存储会话ID。我说使用Memcached作为会话存储。用户的会话ID将在您的Rails应用程序中可用,您可以在进行Ajax请求时将其作为查询参数传递给节点,对吧?关于身份验证部分,我无法发表评论。 - ch4nd4n
这是不好的做法,因为任何拥有会话 ID 的人都可以冒充他们窃取的用户。 - Ozymandias
是的,但如果有人“偷走”它,那么他们无论如何都可以使用它。其他的都不重要。 - ch4nd4n

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接