【发布时间】:2012-05-13 20:01:03
【问题描述】:
我正在尝试在 Django 应用程序上添加实时更新,该应用程序具有与此处所述类似的架构:http://lincolnloop.com/blog/2012/apr/23/ginger-tech-stack/。基本上,更新通过 Redis 从 Django 发送到 Node.js,然后通过 Socket.io 推送到连接的客户端。现在,我可以向所有连接的客户端广播,但在实际情况下,我只需要向与操作相关的客户端发送数据(例如:用户发布消息,只有他的联系人/订阅者收到此消息)。所以我需要在 Node.js 端进行某种身份验证来知道谁是谁。如何实现?
【问题讨论】:
-
假设 Django 和 Node 在同一个主机名上,并且您在 Django 中有基于 cookie 的身份验证,因此 Node 可以读取这些 cookie,您可以为 Node 编写一个用于 Django 身份验证的适配器。跨度>
-
好的,所以我从数据库支持的会话转移到了基于 cookie 的会话,我可以在 Node 端读取 « sessionid » cookie。所以现在我想我必须将this fonction 移植到 Node...
-
对不起——我不清楚我对基于 cookie 的身份验证的含义:如果你可以从 Node 访问同一个数据库,你应该能够使用 db-backed 会话,我只是说使用会话 ID 的 cookie。任何一种解决方案都应该可以正常工作。是的,node's crypto module 将成为你的朋友。
-
好吧,在寻找解决方案时,我认为从 Node.js 访问数据库会过于复杂,但它可能比使用 Django 签名的 cookie 容易得多。我要试试这个方法。感谢您指出 ;)
-
所以现在我可以根据 cookie 的会话 ID 从数据库中检索会话数据。我认为会话数据是base64,但它似乎是python特定的(pickle - 我不熟悉)......有没有办法在节点端解码它?