问题描述
用的是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简单好用。
解决方案: