如果该用户已在其中一台计算机上登录,是否可以显示“已登录”消息。 使用数据库可以做到这一点。 但是我已经实现了登录和注销会话,我认为会话无法显示“已经登录”。
请为此提出最佳方法。
答案 0 :(得分:0)
如果他们去另一台电脑?如果您正在使用session [:something] - 它将存储在浏览器中。对于要在不同浏览器中存储的任何内容,您必须使用数据库进行状态。
答案 1 :(得分:0)
我认为这是可能的,但话虽如此,我不喜欢它。我认为你担心,因为你无法从会话数据中轻松识别用户?
确保每次用户使用应用程序控制器中的before_filter访问应用程序时都会更新用户模型。
在登录过程中,您可以通过指定与会话清理时间限制相同的时间限制来查询“已登录”用户。
您可以这样做:
User.where("email = ? and updated_at >= ?",login_email,20.minutes.ago)
答案 2 :(得分:0)
如果要避免同一用户名的并发登录。可以通过向users表添加一个列来实现最佳实现,该表存储登录用户的IP地址。
否则,您可以将会话存储机制更改为使用以下任一项:
除了默认的 CookieStore 。
答案 3 :(得分:0)
在我看来,实现您所需要的最简单方法是将所有会话存储在数据库中。之后,如果有人已经存储在数据库中,您可以在登录前进行检查 Rails sessions current practices(第一个答案)