如何确保用户不能从未定义的其他设备或浏览器登录



我希望我的用户在识别出他登录的设备后,不能从其他设备或浏览器登录。使用哪些技术和库可以实现这一点?

例如,当用户A在电话上输入时,他/她不能同时登录计算机。

当用户B试图使用用户A的信息登录时,我希望通知管理部门。

我对各种信息都持开放态度。非常感谢。

登录web应用程序通常使用cookie来完成,cookie存储某种类型的session id

您可以在新登录后取消对旧会话的授权,或者使用一些简单的逻辑,包括上次请求的时间戳和会话id。

任何网络技术堆栈都可以做到这一点。

要获取设备id,可以在javascript中使用:var deviceID = MediaDeviceInfo.deviceId;

要实时监控实时用户连接,请使用套接字,例如:(Node.js+Socket.io(

据我所知,如果你想获得特定于设备的信息,如手机的IMEI,这只能使用本地手机应用程序,这取决于平台和;您正在为之构建的设备。在网络应用程序的情况下,我不知道如何通过设备id来识别设备;实现我们自己的设备识别方式,以防止仅通过一个帐户登录多个设备。

因为你问了一个技术不可知论者的问题,所以我只是描述我的想法,而不是库、代码&算法。您可以在自己选择的技术上实现这一点。

让我描述一下方法:在用户端登录后,我们需要一个存储特定于每个用户的令牌的地方。所以我们可以使用header或cookie。我认为使用cookie更容易实现,因为在每个请求上设置头都很痛苦,例如,您需要添加参数来获取将此令牌传递给服务器的请求。

因此,使用cookie,您需要在用户登录后在后端生成一个令牌,并将其存储在该用户的数据库中;将其作为cookie传递给客户端。对于每个被认为有效的请求,cookie中的令牌应该与登录的用户数据库中的令牌匹配,否则注销用户&例如通过电子邮件通知主管。对于每个经过验证的请求(cookie中的令牌与数据库中的令牌匹配(,您必须撤销该令牌&将其存储在数据库中以代替前一个,从而使旧令牌以这种方式过期&使用吊销的令牌更新用户cookie。

这是如何防止多个登录设备的?当用户在其他设备或其他代理上使用帐户凭据登录时,令牌将被吊销&当旧设备发出请求时,令牌不匹配,因此实现的代码将用户注销&如果它试图重新登录,第二个设备也会发生同样的情况&等等。对于任何数量的设备,情况都是一样的,如果登录凭据在多个设备之间共享,一次只能登录一个。

这种方法不会为我们提供特定于设备的信息,但它解决了一次登录多个设备的问题。

  • 为了采取安全措施,请加密cookie。

  • 令牌在每次请求时都会撤销,因此无法与凭证一起共享

  • 当用户注销时,令牌字段应该被清除&清除的令牌字段为具有这些凭据的任何设备签署OK登录操作

很抱歉,如果它变成了长期的,最好的问候;(

相关内容

最新更新