Javascript 禁用基于web的应用程序的多用户登录

Javascript 禁用基于web的应用程序的多用户登录,javascript,java,html,spring,Javascript,Java,Html,Spring,我正在创建一个基于web的应用程序,需要用户注册并登录才能访问某些页面。 我想通过拒绝多人同时使用同一用户名访问来阻止用户向其他人提供用户名/密码 同时。不知道这是否是一个很好的解决方案,但您可以在用户表中保留一点,并在用户登录时将其设置为1。如果其设置不允许其他用户更多登录,请在登录前检查。在注销功能上取消设置此位。在spring security中,我们可以像这样管理用户登录 <session-management> <concurrency-control max

我正在创建一个基于web的应用程序,需要用户注册并登录才能访问某些页面。 我想通过拒绝多人同时使用同一用户名访问来阻止用户向其他人提供用户名/密码
同时。

不知道这是否是一个很好的解决方案,但您可以在用户表中保留一点,并在用户登录时将其设置为1。如果其设置不允许其他用户更多登录,请在登录前检查。在注销功能上取消设置此位。

spring security
中,我们可以像这样管理用户登录

<session-management>
    <concurrency-control max-sessions="1"/>
</session-management>


因此,当用户登录时,您将设置一些会话值,如果还有一个用户要使用现有的用户登录ID和密码登录,在进入登录条件之前,请在后端检查这些参数。您可以防止同一用户登录名和密码的用户多次登录。

您可以使用数据库或分布式缓存

我更喜欢使用数据库(用户ID、会话密钥、登录时间、注销时间)

登录后,您必须使用唯一的会话id在数据库/缓存中记录条目。当尝试使用相同的凭据登录时,请使用注销时间更新现有条目,并使用最近的登录时间创建新条目

e、 g.当您与John登录时

表中的条目类似于“John”、“1020edf1”、“29-06-2015 00:10:00”,为空

10分钟后第二次登录时

表中的条目如下所示

《约翰》,《1020edf1》,《2015年6月29日00:10:00》,《2015年6月29日00:20:00》 ‘约翰’、‘10asdf21’、‘29-06-2015 00:20:00’、‘空’


在应用程序中,您可以使用收割者线程机制,如果用户试图从应用程序注销,该机制将删除非活动会话


这里的会话密钥是应用程序服务器生成的唯一会话id。

如果用户忘记注销或断电(用户表中的值设置为1),那么他将永远不会再次登录。。这个问题的解决方案是什么?在应用程序中,您可以使用收割者线程机制,如果用户试图从应用程序注销,该机制将删除非活动会话。这里的会话密钥是由应用服务器生成的唯一会话id。您不能在普通HTML或Javascript中这样做。如果您正在使用Spring,那么您需要已经开始使用Spring安全性。正如Vig Nesh提到的那样,您可以使用会话管理。建议您已经集成了Spring Security,因为您需要执行其他任务,如访问安全资源、基于角色的管理、密码加密等。im使用Spring 2版本。此代码在Spring 3中支持更新版本是否还有其他方法。在那里你会得到很多好处和特性。如果我更新了,那么我必须更改整个代码,这很难:(这段代码在Spring2.0.4中工作