单点登录(多台机只能一个用户登录,把另一用户踢下)思路
2011-11-11 10:34
267 查看
1、写一个保存SessionInfo的类,用户ID,SessionID等。
2、写一静态Hashtable保存用户Session map(保存1的SessionInfo类,key保存的是用户ID)
3、在写Session的方法里,先通过用户ID(key)从Hashtable里获取SessionInfo类(1的SessionInfo类),如果存在此SessionInfo类,则移除Session;如果不存在则封装SessionInfo对象,把Session的ID赋值给SessionInfo对象的SessionID,然后以SessionInfo为Session的值保存Session,并以用户ID为键,SessionInfo为值,保存在Hashtable。
4、在读取Session验证的BasePage页中,获取当前Session的ID,再获取Hashtable中SessionInfo对象的SessionID,如果Hashtable中SessionInfo对象为空则跳到出错或登录页,如果不为空,则判断两个SessionID是否相等,如果不相等,则跳到出错页或登录页,如果相等表示还是当前用户。
5、在退出时也重复4的操作,只是如果两个SessionID相等,则移除Hashtable中的SessionInfo对象。
2、写一静态Hashtable保存用户Session map(保存1的SessionInfo类,key保存的是用户ID)
3、在写Session的方法里,先通过用户ID(key)从Hashtable里获取SessionInfo类(1的SessionInfo类),如果存在此SessionInfo类,则移除Session;如果不存在则封装SessionInfo对象,把Session的ID赋值给SessionInfo对象的SessionID,然后以SessionInfo为Session的值保存Session,并以用户ID为键,SessionInfo为值,保存在Hashtable。
4、在读取Session验证的BasePage页中,获取当前Session的ID,再获取Hashtable中SessionInfo对象的SessionID,如果Hashtable中SessionInfo对象为空则跳到出错或登录页,如果不为空,则判断两个SessionID是否相等,如果不相等,则跳到出错页或登录页,如果相等表示还是当前用户。
5、在退出时也重复4的操作,只是如果两个SessionID相等,则移除Hashtable中的SessionInfo对象。
相关文章推荐
- shiro 实现单用户登录,一个用户同一时刻只能在一个地方登录
- 一个用户在同一时间只能登录一次
- 一个用户在同一时间只能登录一次
- Spring Boot + Spring Security 防止用户在多处同时登录(一个用户同时只能登录一次)及源码分析
- shiro 实现单用户登录,一个用户同一时刻只能在一个地方登录
- 实现同一个用户只能有一个登录
- normal用户同一时间只能有一个登录session,如何实现多个登录?
- 设置用户帐号只能一个地方登录
- asp.net实现同一用户只能在在一个地方登录即单点登录
- 使用Session实现一个用户只能登录一次
- SQL安全管理范例-创建一个只能在应用程序中登录才有权限的用户.sql
- shiro实现单点登录(一个用户同一时刻只能在一个地方登录)
- java 一个用户在同一时间只能登录一次的绝佳解决方案
- 2.如何让一个项目的用户目前只能是姓名登录,优化为增加一个字段为姓名和用户名同时都可以实现登录 ,并且用户名不能使中文?
- 关于Sa系列用户不能登录,只能本地windows身份验证的说明
- 怎么取消 Windows Server 2012 RDP 限制每个用户只能进行一个会话
- 一个简单的实现不同权限的用户登录后看到不同的菜单设计的数据库表清单
- 创建只能看到自己有权限库的登录名和用户
- iOS开发中点击UITabBarItem弹出一个控制器(如常见未登录用户点击购物车弹出登录页面的效果)
- 《指定一个用户只能在特定的时间里不能登陆》『罗斌原创』