同一个用户不能再两台电脑上同时登录怎么实现比较好

问题描述

用的是springMVC我测试了下是使用的单例。

解决方案

解决方案二:

客户端是.net做的,通过webservice通讯
解决方案三:

可以使用springsecurity
解决方案四:

引用2楼longtian1213的回复:

可以使用springsecurity

这个貌似用不起来
解决方案五:

没积分了有个问题顺便也在这儿问了吧在mybaits中怎么使用merge语法,或者实现数据存在则修改,不存在则删除的功能也可以谢谢大家了!!
解决方案六:

如果你只有一台服务器的话,可以做一个静态的hashtable,存放ID和session的关系。用户登录的时候,如果这个hashtable里能按ID找到session,则把sessioninvalidate或者设置一个标志。。。另外,还要实现sessionlistener,当sessionclose的时候,要把id-session关系删除。如果你还是有不同的服务器,做负载均衡的话,就复杂一些了。
解决方案七:

引用5楼skgary的回复:

如果你只有一台服务器的话,可以做一个静态的hashtable,存放ID和session的关系。用户登录的时候,如果这个hashtable里能按ID找到session,则把sessioninvalidate或者设置一个标志。。。另外,还要实现sessionlistener,当sessionclose的时候,要把id-session关系删除。如果你还是有不同的服务器,做负载均衡的话,就复杂一些了。

不是同一台服务器,为什么不是同一台服务器就不能有session啊,菜鸟求指教啊
解决方案八:

引用6楼jsshizhanab的回复:

Quote: 引用5楼skgary的回复:
如果你只有一台服务器的话,可以做一个静态的hashtable,存放ID和session的关系。用户登录的时候,如果这个hashtable里能按ID找到session,则把sessioninvalidate或者设置一个标志。。。另外,还要实现sessionlistener,当sessionclose的时候,要把id-session关系删除。如果你还是有不同的服务器,做负载均衡的话,就复杂一些了。

不是同一台服务器,为什么不是同一台服务器就不能有session啊,菜鸟求指教啊

因为你得考虑同一个用户在不同的服务器登录的情况。session一般情况都是在存在服务器本地的。
解决方案九:

引用7楼skgary的回复:

Quote: 引用6楼jsshizhanab的回复:
Quote: 引用5楼skgary的回复:
如果你只有一台服务器的话,可以做一个静态的hashtable,存放ID和session的关系。用户登录的时候,如果这个hashtable里能按ID找到session,则把sessioninvalidate或者设置一个标志。。。另外,还要实现sessionlistener,当sessionclose的时候,要把id-session关系删除。如果你还是有不同的服务器,做负载均衡的话,就复杂一些了。

不是同一台服务器,为什么不是同一台服务器就不能有session啊,菜鸟求指教啊

因为你得考虑同一个用户在不同的服务器登录的情况。session一般情况都是在存在服务器本地的。


解决方案十:

使用memcache,用户的登陆后使用用户id做key,session做value,放到memcache中;使用相同的用户名登陆时,则现根据用户id到memcache中查找,若存在则表示该用户已经登陆了,再做具体处理:1、踢下线,删除第一个用户的session;2、第二个用户不能登陆;一般将session和用户信息绑定单独保存,用户操作时查询该session是否存在。
解决方案十一:

引用9楼abc_key的回复:

使用memcache,用户的登陆后使用用户id做key,session做value,放到memcache中;使用相同的用户名登陆时,则现根据用户id到memcache中查找,若存在则表示该用户已经登陆了,再做具体处理:1、踢下线,删除第一个用户的session;2、第二个用户不能登陆;一般将session和用户信息绑定单独保存,用户操作时查询该session是否存在。


解决方案十二:

引用10楼jsshizhanab的回复:

Quote: 引用9楼abc_key的回复:
使用memcache,用户的登陆后使用用户id做key,session做value,放到memcache中;使用相同的用户名登陆时,则现根据用户id到memcache中查找,若存在则表示该用户已经登陆了,再做具体处理:1、踢下线,删除第一个用户的session;2、第二个用户不能登陆;一般将session和用户信息绑定单独保存,用户操作时查询该session是否存在。

一般都是这么做的多数是顶下去
解决方案十三:

以前做的一个比较大气的,把登陆的用户信息存放在application中,在登陆时看application中查,有的话就清掉,没的话就登陆,不过纠结的一点是如果后来的操作快的话后来的就又登陆进去了,不过我提出的意见是记录用户IP,不过一个小组的也没去实现,都是懒蛋
解决方案十四:

引用12楼a8441223的回复:

以前做的一个比较大气的,把登陆的用户信息存放在application中,在登陆时看application中查,有的话就清掉,没的话就登陆,不过纠结的一点是如果后来的操作快的话后来的就又登陆进去了,不过我提出的意见是记录用户IP,不过一个小组的也没去实现,都是懒蛋

记录用户IP这个不行的,其实用UUID用来标识就可以了
解决方案十五:

引用13楼jsshizhanab的回复:

Quote: 引用12楼a8441223的回复:
以前做的一个比较大气的,把登陆的用户信息存放在application中,在登陆时看application中查,有的话就清掉,没的话就登陆,不过纠结的一点是如果后来的操作快的话后来的就又登陆进去了,不过我提出的意见是记录用户IP,不过一个小组的也没去实现,都是懒蛋

记录用户IP这个不行的,其实用UUID用来标识就可以了

还有一种就是把系统所有的登录服务做到同一服务器(或集群)上。由这个服务器(集群)统一确认用户的session是否有效
解决方案:引用11楼djy18178的回复:

Quote: 引用10楼jsshizhanab的回复:
Quote: 引用9楼abc_key的回复:
使用memcache,用户的登陆后使用用户id做key,session做value,放到memcache中;使用相同的用户名登陆时,则现根据用户id到memcache中查找,若存在则表示该用户已经登陆了,再做具体处理:1、踢下线,删除第一个用户的session;2、第二个用户不能登陆;一般将session和用户信息绑定单独保存,用户操作时查询该session是否存在。

一般都是这么做的多数是顶下去

我们是在数据库中实现的不是在内存中
解决方案:引用15楼jsshizhanab的回复:

Quote: 引用11楼djy18178的回复:
Quote: 引用10楼jsshizhanab的回复:
Quote: 引用9楼abc_key的回复:
使用memcache,用户的登陆后使用用户id做key,session做value,放到memcache中;使用相同的用户名登陆时,则现根据用户id到memcache中查找,若存在则表示该用户已经登陆了,再做具体处理:1、踢下线,删除第一个用户的session;2、第二个用户不能登陆;一般将session和用户信息绑定单独保存,用户操作时查询该session是否存在。

一般都是这么做的多数是顶下去

我们是在数据库中实现的不是在内存中

数据库中加一个字段表示该用户已登录?
解决方案:Shiro的单点登录应该能解决这个问题,都说比SpringSecurity简单好用。
解决方案:

时间: 2024-09-12 19:32:06

同一个用户不能再两台电脑上同时登录怎么实现比较好的相关文章

怎么实现同一用户只能在一台电脑上登录啊

问题描述 怎么实现同一用户只能在一台电脑上登录啊 解决方案 解决方案二:1方法1第一次登录记录该用户号及CPU序列号,第二次登录及后续登录判断用户号及CPU序列号是否同第一次一样!2方法2用户信息有个字段记录该用户可登录的计算机CPU序列号登录的时候进行判断解决方案三:在服务器端记录用户是否登陆,如果已经登陆,再登陆就不允许登陆就好了解决方案四:不明白lz要了解什么,和百度账号一样自动踢人?http://dev.csdn.net/develop/article/65/65215.shtm

同一个bytes[]数组在两台机器上转成String时内容不同

问题描述 用Encoding.GetString()或者用StreamReader读MemoryStream结果都一样,一台机器能读出正确结果,另一台就是另外一个结果,其中缺少了一部分,百思不得其解,是操作系统的原因吗?还有可能是什么原因呢 解决方案 解决方案二:用同一种字符编码例如:Encoding.UTF8.GetString(buff);解决方案三:首先,要明确最开始string转bytes[]用的是什么字符编码解决方案四:引用1楼songbing774933的回复: 用同一种字符编码例如

人人桌面能在一台电脑上同时登录多个帐号吗?

人人桌面支持多帐号同时登录.登录一个帐号后,重新启动人人桌面程序,输入想要登录的帐号密码,即可实现多个人人网帐号同时登录. [温馨提示:人人桌面2.3及以上版本开始支持此功能]

Win7系统两台电脑如何共享文件?

有的时候我们需要会用到两台以上的电脑来共享一些文件,这样方便我们办公.传送资料等等.但有的企业内部不能上QQ,也就无法共享和传送一些文件了.这也是个问题?那么两台电脑要如何共享Win7电脑上的文件呢?下面就详细和大家说一下Win7两台电脑共享文件的方法. 具体步骤如下: 一.两台电脑如何共享文件,两台电脑怎么传文件. 1.由于很多内部电脑都是在同一个局域网(在同一个路由器或者交换机相连的电脑成为局域网),那么我们可以先给每一台电脑设置一个固定的IP地址,如一个为192.168.1.10,另一个为

python实现简单socket程序在两台电脑之间传输消息的方法_python

本文实例讲述了python实现简单socket程序在两台电脑之间传输消息的方法.分享给大家供大家参考.具体分析如下: python开发简单socket程序在两台电脑之间传输消息,分为客户端和服务端,分别在两台电脑上运行后即可进行简单的消息传输,也可以在一台电脑上测试,设置两个不同的端口即可. # Save as server.py 服务端代码 # Message Receiver import os from socket import * host = "" port = 13000

限制在同一台电脑上只允许有一个用户登录系统

在web应用系统中,出于安全性考虑,经常需要对同一客户端登录的用户数量和一个客户同时在多个客户端登陆进行限制.具体一点就是:    1.在同一台电脑上一次只允许有一个用户登录系统,2.一个用户在同一时间只允许在一个客户端登录.     我最近做的一个系统就遇到了这样的问题,本来系统已经开发完成了,但是安全测评没有通过,就是因为没有做这两个限制.怎么来做这样的限制呢?我在网上找了很久,发现问这个问题的人很多,但是没有找到特别清楚的答案.后来自己摸索着,看了一些书,终于找到解决办法了.     要解

java网络编程-两台电脑IP地址一样!同一个无线

问题描述 两台电脑IP地址一样!同一个无线 今天学习java网络编程 先用TCP 客户端服务端实现两台电脑通讯,成功了,当时一台是192.168.1.104,一台是105.然后我想试下udp,结果失败了,查了下ip,两台电脑都成104了,这是怎么回事啊 解决方案 IP一样怎么能通讯呢 解决方案二: 那你把两台计算机的IP地址设成不一样的再试不就好了么 解决方案三: 你改回105就可以了啊,获得你的端口号改变下 解决方案四: 估计是得修改一下IP了,可能是你那里没有写对吧

求问各位大神,同一个WCF服务类在一台电脑上的多个端口开启,如何能在服务类内部获取当前服务是在哪个端口上

问题描述 求问各位大神,同一个WCF服务类在一台电脑上的多个端口开启,如何能在服务类内部获取当前服务是在哪个端口上 解决方案 解决方案二:System.ServiceModel.OperationContext.Current.Channel.LocalAddress.Uri.Port解决方案三:引用1楼fate23409的回复: System.ServiceModel.OperationContext.Current.Channel.LocalAddress.Uri.Port 貌似是正确的,共

如何让两台电脑共用一台打印机?

设置共享打印机的电脑: 1:两台机器确定已经连成局域网,在同一个工作组,而且保证可以互访. 2:在连接打印机的电脑上确保正确安装了打印机驱动,而且正常使用. 3:查看网上邻居 属性 本地连接 属性里的 "Microsoft网络的文件和打印机共享"是不是勾了 4:打开 我的电脑,控制面板,在打开打印机和传真,这里我们必须设置为默认的打印机,如果不是默认打印机,请鼠标右键 设置为默认的打印机. 5:选择打印机属性,然后点共向后,选择共享打印机,共享名,注意:如果不是XP系统的话,在下一步时