Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在使用Desive的rails应用程序中限制并发用户会话?_Ruby On Rails_Ruby_Devise - Fatal编程技术网

Ruby on rails 如何在使用Desive的rails应用程序中限制并发用户会话?

Ruby on rails 如何在使用Desive的rails应用程序中限制并发用户会话?,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,限制并发用户会话或登录: 对于用户,我需要在登录时应用限制。我想允许一个用户user@gmail.com只能从不同的5台电脑或浏览器登录 我使用的内容: 我在users表中添加了两个字段,分别称为session_limit(用于指定用户登录限制)和session_count(用于存储该用户当前正在运行的会话) 当用户登录时,我在会话计数中添加了一个,当用户注销或超时时,我从会话中减去一个。我在登录时检查了会话数,当达到会话数限制时注销。一开始效果不错 我面临的问题: 当用户在未注销会话的情况下关

限制并发用户会话或登录:

对于用户,我需要在登录时应用限制。我想允许一个用户user@gmail.com只能从不同的5台电脑或浏览器登录

我使用的内容:

我在users表中添加了两个字段,分别称为session_limit(用于指定用户登录限制)和session_count(用于存储该用户当前正在运行的会话)

当用户登录时,我在会话计数中添加了一个,当用户注销或超时时,我从会话中减去一个。我在登录时检查了会话数,当达到会话数限制时注销。一开始效果不错

我面临的问题:

当用户在未注销会话的情况下关闭浏览器时,计数保持不变,并且当用户下次登录时,它表示已达到用户会话限制。即使没有人登录


请提供帮助。

您可以使用websockets来检测浏览器窗口何时关闭并减少会话次数这是我已经考虑过的,但如果有任何最好的方法从服务器端完成这项工作,那就太好了。您可以做的是向用户显示其连接设备的列表(您可以使用HTTP用户代理)找出哪个是哪个。然后提示他们从一个或多个浏览器注销。您可以使用WebSocket检测浏览器窗口何时关闭,并减少会话次数。这是我已经想到的,但如果有任何最佳方法可以从服务器端完成,那就太好了。您可以做的是向用户显示其连接设备的列表(您可以使用HTTP用户代理)确定哪个是哪个。然后提示他们从一个或多个站点注销。