所以我们当前正在使用Rails应用程序作为我们的主要后端,但我们也使用带有socket.io的node.js服务器来允许每个页面上的一些实时更新数据。设置连接和socket.io房间现在很好,问题是我需要验证用户是否有权访问他们尝试加入的房间中的信息。我需要做的是验证发出javascript socket.io请求的用户是否在同一会话中登录到rails服务器(IE如果有人试图访问节点服务器上限制为用户X的数据,他们必须登录作为rails服务器上的用户X)。我在rails服务器上使用巫术进行帐户授权。
我最初的想法是在用户会话登录rails时存储两个cookie:session_token和他们的电子邮件。假设用户X再次登录,他的电子邮件是X@mail.com。 X的帐户凭据(用户和密码)在rails上验证,两个cookie存储在他的会话中。然后rails服务器将在SQL数据库中存储X@mail.com' s session_token。然后X导航到具有socket.io连接的页面。然后,节点服务器将读取这些cookie,找到具有该电子邮件的用户,并验证其会话令牌cookie是否与数据库中的条目相同。如果是,它们现在已经有效地登录到节点服务器上,我可以让他们访问他们在rails服务器上拥有的相同信息。这是一个有效的解决方案,还是存在潜在的安全漏洞?
我对Rails非常熟悉,但对node.js / socket.io不熟悉,所以在描述节点内容时我要求你说明一点。