2017-07-31 46 views
0

我正在試圖在Symfony中研究FOSUserBundle。我在谷歌搜索「如何檢查其他用戶是否登錄到他們的帳戶」,但我沒有做到這一點。我想添加一個綠色的標記,如果一個特定的用戶登錄,Facebook的方式。如何檢查symfony中的其他用戶登錄3

我不知道,如果FOSUserBundle有將檢查用戶是否登錄的代碼,我發現這個(other question on SOF),但它僅檢查當前用戶登錄。

我不「知道這是一個好主意,在我的實體

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

這會設置一個用戶的身份添加該屬性(登錄或沒有),我會到fos_user表將其保存到添加一列數據庫。

回答

3

爲了解決這個問題,你首先需要定義什麼登錄實際上意味着你的情況。 因爲您的代碼通常只在每個請求中調用一次,所以用戶可能在此之後5秒後失效,或者他可以讓頁面打開一個小時,但在這兩種情況下,用戶可能仍然會在會話中登錄。

所以你可能想要做的是檢查用戶是否目前活躍。有多種方法可以做到這一點,根據信息的實時性,您必須爲您選擇最佳選擇。最簡單的(imho)是通過AJAX調用(輪詢或長輪詢)每隔X秒向服務器發送一次ping命令,然後決定在狀態變爲離線狀態之前的多長時間。 AJAX調用失敗應該有一些羅馬。

其他選項可以讓您更實時地進行概述,可以使用WebSockets或Server Sent Events。

可能還有其他選項,例如使用像PubNub這樣的服務處理連接,並使用它們的API來確定用戶是否處於非活動狀態。但是,你需要爲自己找出答案。

+0

這是實時的好主意。但是在fSt_user表中添加logStatus中的另一個字段可以嗎? – user3818576

+0

我的想法是當用戶登錄時,我將字段logStatus更新爲活動狀態。這將檢查我是否用戶登錄然後我將使用socket.io或任何將做ajax – user3818576

1

加入這一領域它的好知道你可以去查詢,以查找用戶這一地位的真正
但probleme其如何保持更新這些數據,你不能做到這一點的symfony
我,我使用像心跳平埃夫裏的X分鐘,看看用戶的活動,你可以使用Socket.io

+1

感謝這個想法的socket.io。我現在的想法是在用戶登錄時將logStatus字段更新爲激活狀態。然後使用socket.io將檢查用戶 – user3818576