How limit user connection?

时间:2017-08-10 作者:alessandro308

我正在寻找一种方法来限制我的用户一次最多打开一页。我怎样才能在不手动检查用户ID的情况下获得它,并构建一个插件来检查该用户是否已经在线?

我的目标是拒绝用户从两个位置(例如PC和平板电脑)同时连接到我的网站。

1 个回复
SO网友:Tom J Nowell

没有万无一失的方法可以做到这一点,我要指出的是,如果您尝试这样做,您将无法缓存页面以提高性能

强制用户只能打开一个页面,没有选项卡,没有其他设备/浏览器,这是不可能的,尝试这样做的一些措施很容易绕过。通常情况下,用户会意外地绕过它们,而用户从来没有意识到这一点。

为此,您的所有浏览器选项卡都需要交叉通信。这在浏览器之间不起作用,或者如果JS失败,或者JS被关闭。也有可能每个选项卡都会相互检测,并且所有选项卡都会锁定。浏览器对此的支持将受到限制。它不会是基于WordPress的解决方案

每个设备强制用户会话这也不是万无一失的,没有保证,但更简单一些

$sessions = wp_get_all_sessions();
if ( count( $sessions ) > 1 ) {
    // more than 1 session, logout somewhere else to resume
}
请注意:

如果您的站点不是https,则用户必须登录。任何人都可以窃取cookie并共享会话。用户可以从开发工具中复制粘贴cookie并将其插入其他设备上的浏览器中。用户到达页面后,无需执行任何操作即可停止此操作。他们可以在其他选项卡中注销并在其他设备上打开该页面,给他们一个页面,但在两台设备上,一个关于IP跟踪的注释,这将不起作用,并且会产生高度不可预测的结果。

例如,NAT使本地网络上的所有内容共享一个IP。就像代理或VPN一样。ISP也在试验或使用CGNAT,因此数百万用户可能共享IPv4地址的一小部分,从而导致不可预测的结果。

您还可以锁定拴在一起或使用手机的人。当他们在手机桅杆上移动时,他们的IP可能会改变,从而触发你正在构建的多屏幕检测系统。

一个基本问题是,在Hangouts/Skype/Zoom/FB Live/Twitch/etc/etc/etc中,打印屏幕键“另存为”(save as),你可以很容易地在这方面投入大量的时间,却发现有人用一些琐碎的事情回避了它。E、 g.当花费数周时间构建高级防盗系统来阻止人们右键单击保存图像时,却发现将图像拖放到桌面上效果很好。

结束

相关推荐

克隆像users.php这样的管理页面

在我的项目中,我想创建一个新的菜单位置,它实际上是“用户”页面的副本,但需要一些额外的过滤器/修改。例如,我需要在用户上方有另一个名为“Admins”的菜单位置,它将显示完全相同的结构化页面,但只有Admin用户。这是为了给我的客户带来更好/更简单的用户体验。我的问题是如何做到这一点?我知道有些函数add_menu_page 但是像这样使用它们(users.php 作为标识符):add_menu_page( \'custom menu title\', \'custom menu\', \'users.p