首页 > 解决方案 > 允许用户一次从一台设备登录

问题描述

我一直在谷歌上搜索是否可以限制用户一次从一台设备登录的答案。

假设有一个 Web 应用程序(Ruby on Rails 应用程序)允许一个用户一次从一台设备登录。如何实现?

要解决这个问题,我认为首先要识别一个设备。也许是通过它的 Mac 地址,但我没有找到任何方法从浏览器发出的用户请求中获取设备的 Mac 地址。

我也考虑request.remote_ip过,但这对于连接到一个 Wi-Fi 的多个设备可能是相同的。

如果有人能就可能的解决方案分享一些想法,那将非常有帮助。谢谢!

标签: ruby-on-railsweb-applications

解决方案


你不能依赖request.remote_ip任何一个。由于 NAT,单个 IP 地址可以共享给多个用户和/或设备,例如 - 常见情况是家庭路由器或蜂窝数据。

但是您可以在用户登录时生成一个唯一的会话 ID/令牌,并将其存储在 cookie 和服务器端,然后检查它。当用户从第二台设备登录时 - 这将覆盖前一个令牌,而后一个会话将成为唯一允许用户使用的会话。或者,您可以根据您的逻辑在前一个会话存在(未终止或超时)时拒绝第二次登录。

对于devisegem,有devise-securitygem 提供:session_limitable了实现第一个会话变得不可用的规则的策略。


推荐阅读