禁用单个会话/用户的多标签浏览

时间:2018-01-26 02:35:48

标签: ruby-on-rails session

[免责声明:我不确定此处是否接受此类问题,因为它是关于已经部署的一个软件。请放心,我没有删除任何机密信息。另外请告诉我,如果我通过发布这样做违反任何规则,那么我可以立即将其删除]

我有一个有效的学习管理系统Web应用程序,我最近收到了一个关于未显示按钮的错误报告。经过调查,我已经证明用户没有按预期使用网络应用程序。在参加考试时,他正在打开多个标签以利用该功能,通知他答案是否正确。然后,他将使用此信息来消除错误的答案,并在另一个选项卡/窗口中提交所有正确的答案。

我使用的是Rails 4.2。有没有办法阻止多标签浏览?我想,如果用户已登录并且他试图打开webapp的新选项卡,他应该看到类似"请使用一个选项卡"并禁用所有功能/超链接/按钮。

  

这是我如何证明他使用多个标签的屏幕截图。请注意,同一次尝试#有多个日志,因为当前实现允许保存研究会话并在以后恢复(这是被利用的部分)。多个选项卡的打开搜索最近的尝试会话并从那里继续。这也是大多数会话没有持续时间值的原因 - 用户只完成一个选项卡的学习会话(通过单击结束学习会话的按钮)。系统无法计算持续时间,因为其他会话没有结束时间戳。   enter image description here

-

  

这是单标签用户的样子:   enter image description here

这更像是一个应用程序滥用问题,而不是一个错误。

2 个答案:

答案 0 :(得分:0)

您不仅应该从多个标签添加保护,而且还应该为多个浏览器添加保护,因此它不能完全是FrontEnd检查。

其中一个解决方案可能是使用ActionCable检查用户是否已有活动连接,然后采取相应措施。

例如,另一个在JS中生成GUID并将其传递给每个答案。如果它与之前的答案不同,则表示用户打开了一个新窗口。

但当然解决方案将取决于您当前的架构,而不知道您目前如何组织客户端 - 服务器通信,很难给出准确和最佳的解决方案。

答案 1 :(得分:0)

我找到了答案here。我只是将这个js放在应用程序视图中以防止任何额外的网站实例。 感谢所有投入的人。