2011-12-14 140 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(第一个答案)