2011-12-14 160 views
0

如果該用戶在某臺機器上登錄,是否可以顯示「已登錄」消息? 這個東西可以使用數據庫。 但是我已經實現了登錄和註銷的會話,我認爲會話無法顯示「已登錄」。Ruby On Rails中的會話

請爲此建議最佳方式。

回答

0

如果他們去了另一臺電腦?如果你使用session [:something] - 它存儲在瀏覽器中。對於通過不同瀏覽器存儲的任何內容,您必須使用數據庫來查看狀態。

0

我認爲這是可能的,但有人說,我不喜歡它。我認爲你擔心,因爲你不能從會話數據中輕鬆識別用戶?

確保在用戶每次通過應用程序控制器中的before_filter訪問應用程序時都更新用戶模型。

在登錄過程中,您可以通過指定與會話清理時間限制相同的時間限制來查詢「登錄」用戶。

你可以做這樣的事情:

User.where("email = ? and updated_at >= ?",login_email,20.minutes.ago) 
0

如果你想避免同一用戶名同時登錄。通過在存儲登錄用戶的IP地址的用戶表中添加一列來實現最佳實施。此外

  • 爲ActiveRecordStore
  • FileStore的
  • DRbStore
  • MemoryStore的

到默認的CookieStore

否則,你可以改變會話存儲機制爲使用的。

0

在我誠實的意見中,實現你所需要的最簡單的方法是將所有會話存儲在數據庫中。之後,您可以在登錄之前檢查是否有人已存儲在數據庫中 Rails sessions current practices(第一個答案)