Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.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
Node.js 防止同一用户同时登录不同的系统_Node.js_Angular_Mongodb_Authentication_Backend - Fatal编程技术网

Node.js 防止同一用户同时登录不同的系统

Node.js 防止同一用户同时登录不同的系统,node.js,angular,mongodb,authentication,backend,Node.js,Angular,Mongodb,Authentication,Backend,相同的用户和密码可以在无限的计算机上同时使用!! 如果个人1使用特定用户名登录,而个人2使用相同的用户名和密码登录到不同的计算机或浏览器,则个人1不会自动注销!!!而且它们都与同一用户一起工作,没有任何干扰 我需要防止这种情况,并阅读许多关于它的帖子。 我不会为一个付费模块付钱的 使用session_id()标识会话号不会有帮助,因为当person 1与用户一起登录,person 2与同一用户在不同的计算机/浏览器上登录时,它们具有不同的会话id,因此我无法识别person 1是否已登录并终止其

相同的用户和密码可以在无限的计算机上同时使用!! 如果个人1使用特定用户名登录,而个人2使用相同的用户名和密码登录到不同的计算机或浏览器,则个人1不会自动注销!!!而且它们都与同一用户一起工作,没有任何干扰

我需要防止这种情况,并阅读许多关于它的帖子。 我不会为一个付费模块付钱的

使用session_id()标识会话号不会有帮助,因为当person 1与用户一起登录,person 2与同一用户在不同的计算机/浏览器上登录时,它们具有不同的会话id,因此我无法识别person 1是否已登录并终止其会话

另外,添加一个新字段“login_status”的解决方案,当person 1登录时,将其设置为1,当person 2尝试登录时,检查该字段并在login_status为1时阻止他,也不会起作用,因为在用户刚刚关闭浏览器窗口且未按下注销链接的情况下,我无法更新该字段

这是一个巨大而关键的问题

任何提示和帮助都将不胜感激

多谢各位


我使用JWT令牌进行身份验证,在后端使用NodeJ,在前端使用angular,在mongoDb中使用数据库。

另一种解决方案是,当您从不同的设备登录时,关闭现有会话

因此,如果用户在设备1上运行会话并在设备2上登录,则将删除设备1上的会话,并为设备2创建新会话


这也解决了您指出的不注销的问题。用户是否不注销并不重要。从其他设备创建新会话时,会话将关闭。

您建议我在后端添加会话?是的,将用户会话保存在后端。或者,如果不是会话,则可以使用某个值来通知前端在检测到来自不同设备的具有相同用户的新会话时终止会话。