8

私のメインアプリは Django アプリですが、リアルタイムのものには Node/Socket.IO を使用したいと考えています。Redis を使用して、Django からノード (そしてさまざまなクライアント) への pub/sub を実行しています。トリッキーな部分は、Django auth に対して 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));
  });

});

だから私の質問は、実装するための良い戦略は何authenticateAndGetUserIdですか? セッションは MySQL でサポートされているため、そこを通過できます。それについてもっと良い方法があるかどうかに興味があります。

4

2 に答える 2

4

Django 側では、REST API を公開します。次に、Node.js で POST ユーザー名/パスワードのようなことを行うことができます

http://yourdjangoserver.com/authenticate

必要な情報を含む JSON が返されます。API を公の精査から保護したい場合は、非公開にするか、基本認証などで保護してください。

restify は、Node.js 側で REST API を非常に簡単に操作できるようにする npm パッケージです。このアーキテクチャの良い点は、疎結合であることです。Django を何にでも置き換えることができ、クライアントは決して知りません。

于 2012-05-06T07:29:05.407 に答える
3

すでに redis サーバーがある(username, sessionkey)ため、ログインしているすべてのユーザーのペアを保存できます。オプションで、セッション設定に対応する TTL 値を使用できます。

次に、ユーザーがチャンネルの購読をリクエストするたびに、ユーザー名を送信し、redis データ ストアと照合します。

于 2012-06-09T11:22:05.530 に答える