2016-10-22 2 views
0

whatsappのようなチャットを作りたいと思います。 (各ユーザーには、彼としか話せない連絡先リストがあります) 私のサーバー認証はFacebookのトークンに基づいています。 そして、私のソケット認証が同じであることを望みます。セイルとソケットと認証

現在のシナリオ: - ユーザーがログインした後、フロントエンドは自分のセイルサーバーにソケット接続要求を送信します。 - サーバー "beforeConnect"機能で、私は彼のfbトークンでユーザーを見つける。 - ユーザーが見つかりました。ソケットが正常に接続されました。

問題:私は彼のチャットを見つけて、彼のチャットと新しいメッセージについてだけ彼を更新したいので、ソケット上で利用できるようにユーザーの詳細が必要です。

これは私のbeforeConnect関数が今のように見える方法です。 enter image description here

P.S:それは言及する価値があるかどうかを知りませんが、私は私の帆サーバソケットを接続するために、私はドキュメントで見たsails.io.jsクライアント側でsocket.ioを使用して、いませんよ。

+0

でトークンを渡すけど...あなたは、コントローラでユーザの詳細情報を必要としますか?これまでに収集したものから、 'req.socket.getId()'のいずれかのユーザーがセッションデータと共にユーザーに関連付けることができます。私が読んだところから、より良いアプローチは、http://angular-tips.com/blog/2014/05/json-web-tokens-examples/(api/policies/tokenAuthを探してください)のようなポリシーを使うことです。 js)。毎回FBに対して認証すれば、これは高価になる可能性があります –

答えて

0

新しいバージョンで廃止されるのonConnect方法、あなたはconnectイベントにトークンを使用して認証を行うことができます、あなたがトークンしばらく保管しなければならないが、接続して、認証のために他のリスナーにチェックし、設定/ bootstrap.js

module.exports.bootstrap = function(cb) { 

    // handle connect socket first event executes after logged in 
    sails.io.on('connect', function (socket){ 
     // store facebook token here 
    }); 

    // handle custom listener for other stuff 
    sails.io.on('doSomeStuff', function (socket){ 
     // check facebook token match with requested token 
    }); 
cb(); 
}; 
にこのコードを置きます

クライアント: することができます簡単なEMIT「doSomeStuff」の後には、Facebookのアカウントでログインし、少し遅れて、各要求

+0

ありがとうございました! - 現在、ユーザーが接続しようとした場合のように、各リクエストで承認を行います - 私は彼のfbトークンを処理し、彼に接続させます。ソケットが接続されていても、各要求ごとにfbトークンを送信し、ユーザーを見つけてからコントローラを続行します。毎回fbトークンを処理するのはいいですか? –

+0

こんにちは@TalGvili、以下の認証ユーザーのためのトークンを管理する方法の詳細については、 –

+0

[リンク](http://stackoverflow.com/questions/19548009/user-authentication-using-socket-io) –