2017-07-31 4 views
0

私はsymfonyのFOSUserBundleを勉強しようとしています。 Googleで「他のユーザーが自分のアカウントにログインしているかどうかをチェックする方法」を検索しましたが、失敗しました。特定のユーザーがログインしている場合、Facebookがそれを行う方法に緑の色付きのマークを追加したいと思います。symfony 3の他のユーザーログインを確認する方法

FOSUserBundleはユーザーがログインしているかどうかをチェックするコードを持っている場合、私は知らない。私は、この(other question on SOF)を見つけだけをチェックし、それは、現在のユーザーがログインしている場合。

Iドン「がtは(ログインまたはしない)、それは私のエンティティ

/** 
    * 
    * @ORM\Column(name="log_status", type="boolean", nullable=true) 
    */ 
    protected $logStatus; 

これは、ユーザーのステータスを設定しますこのプロパティを追加することをお勧めします知っていると私はそれを保存するfos_userテーブルにカラムを追加しますデータベース。それは良いことだそのフィールドを追加すること

答えて

3

を使用することができ、ユーザはそのアクティブかどうかを確認するために、あなたは最初ログインが本当にあなたのケースで何を意味するかを定義する必要があります。 通常、コードはリクエストごとに1回だけ呼び出されるため、ユーザーはその5秒後にページを開くことができます。どちらの場合も、セッションにログインしている可能性があります。

だから、おそらくあなたがしたいのは、ユーザーが現在アクティブかどうかを確認することです。これを行うには複数の方法があり、情報のリアルタイム性に応じて最適なオプションを選択する必要があります。

AJAXコール(ポーリングまたはロングポーリング)を使用してX秒ごとにpingを実行し、ステータスがオフラインに変わるまでの時間を判断するのが最も簡単です(imho)。 AJAX呼び出しが失敗するには、いくつかのローマが必要です。

その他のオプションを使用すると、WebSocketsまたはServer Sent Eventsのいずれかを使用することができます。

PubNubのようなサービスを使用して接続を処理し、そのAPIを使用してユーザーが非アクティブになったかどうかを判断するなどのオプションがあります。しかし、あなたは自分自身のために把握する必要があります。

+0

これはリアルタイムでの良いアイデアです。 fos_userテーブルにlogStatusという別のフィールドを追加しても問題ありませんか? – user3818576

+0

私のアイデアは、ユーザーのログイン時に、私はフィールドlogStatusをアクティブに更新します。それはユーザーのログインが私はsocket.ioまたはajaxを行う何かを使用する場合は私をチェックします – user3818576

1

は、ステータスがその真の
しかし、あなたは私のためにsymfony
で私が使用することはできませんその方法更新にこのデータを保持するためにproblemeことをあなただけのユーザーを見つけるために、クエリを行くことができます知っていますpingのエブリーX分のようなハートビートあなたがこの問題に取り組むためSocket.io

+1

socket.ioというこのアイデアをありがとう。私の考えは、ユーザーのログイン時にフィールドlogStatusをアクティブに更新することです。私のユーザーを確認するsocket.ioを使用して – user3818576

関連する問題