如何使用Django身份验证对Node应用程序中的用户进行身份验证?

Bia*_*cki 7 authentication django node.js

我的主应用程序是一个Django应用程序,但是,对于一些实时的东西,我想使用Node/Socket.IO.我正在使用Redis从Django到Node(再到各种客户端)做一些pub/sub.棘手的部分是如何根据Django身份验证对Node用户进行身份验证?

在我的Node应用程序中,我有:

io.on('connection', function (socket) {
  const subscribe = redis.createClient();
  var userId = authenticateAndGetUserId();
  subscribe.subscribe(userId + ':feed-items');

  subscribe.on('message', function (channel, message) {
    socket.emit('feed-items', JSON.parse(message));
  });

});
Run Code Online (Sandbox Code Playgroud)

所以我的问题是什么是一个很好的实施策略authenticateAndGetUserId?会话在MySQL中支持,所以我可以通过那里.只是好奇是否有更好的方法去做.

del*_*ber 4

在 Django 方面,我将公开一个 REST API。然后在 Node.js 上,您可以执行类似 POST 用户名/密码之类的操作

http://yourdjangoserver.com/authenticate

这将返回一些包含您需要的信息的 JSON。如果您希望保护 API 免受公众审查,那么要么将其设为私有,要么使用基本身份验证之类的方法进行保护。

restify 是一个 npm 包,可以非常轻松地在 Node.js 端使用 REST API。这种架构的好处是它是松散耦合的。你可以用任何东西替换 Django,而客户永远不会知道。

  • 这。我在 Django 用户配置文件模型中创建了一个“api key”字段,密钥是随机生成的。然后,您可以使用一个简单的 HTTP 端点/API 来获取该密钥并确定它是否属于有效用户。 (2认同)