怎样实现同一个账户同一时间只能在一个终端登录
来源:互联网 发布:中国大数据信息 编辑:程序博客网 时间:2024/06/05 18:57
不少系统都希望实现同一个账户同一时间只能在一个地方登录,如腾讯QQ,当你的账户在另一个终端登录后,之前正在登录访问的终端会被强制下线,这样做的好处我认为有两点:1)能提高系统/网站的安全性,比如说如果你在操作过程中被挤下线了,你便能马上察觉到账户和密码已经泄露,要马上修改密码或联系管理员冻结账户;2)能减少系统的开销,因为每个登录的终端都需要耗费服务器资源,登录的用户,Session占用的空间也会大些,如果账户做了只能在一个终端登录后,其他终端的登录会话所占用的资源能及时得到释放,有利于节省宝贵的服务器资源,此外,如果不做这个限制,有可能会被恶意攻击的人利用这个问题来消耗服务器资源,这样可能对服务器的性能产生很大的影响。
那怎样才能实现单终端登录限制呢?下面来介绍一下我的实现思路,希望能帮助到有同样需求的小伙伴,有异议的朋友也欢迎留言交流。
先来看一个流程图:
在账户表的基础上,我新建了一个账户account_session表,用来记录登录账户的account_id和最新一次登录成功用户的session_id,然后首先要修改登录方法:每次登录成功后,要将登录用户信息写入Session的同时还要更新account_session表里相应账户的session_id(当然,如果是第一次登录时,进行的便是插入动作),然后要修改获取当前用户信息的方法,在里面要做两重判断,首先,看当前会话是否存在登录用户信息,如果没有,则肯定是未登录,不再赘述,如果有,还要再进一步要用当前会员里存的account_id去account_session表查询最新的session_id,与当前会员中的session_id作比较,如果是一致的,说明当前会话是最新的会话,登录状态正常,如果不一致,说明在当前登录会话创建后,被新的登录会话覆盖掉了,当前的登录会话已经失效,这时候,服务器应该删除当前的登录会话并返回提示给客户端,至此,限制账户同一时间单终端登录功能便实现了。
- 怎样实现同一个账户同一时间只能在一个终端登录
- spring实现同一账号同一时间只能在同一个地方登录
- java实现统一账户同一时间只能在一个地方登陆
- 一个帐号在同一时间只能一个人登录
- java实现同一账号同一时间只能在一个地方登录(QQ登录效果)
- java web实现同一账号同一时间只能在一个地方登录
- 实现同一个用户只能有一个登录
- 一个帐号同一时间只能一个人登录
- 一个帐号同一时间只能一个人登录
- 一个帐号同一时间只能一人登录
- 一个帐号同一时间只能一个人登录
- 限制同一时间只能一个用户登录
- 一个帐号同一时间只能一人登录
- java 一个帐号同一时间只能一个人登录
- 一个帐号同一时间只能一个人登录
- normal用户同一时间只能有一个登录session,如何实现多个登录?
- java 一个用户在同一时间只能登录一次的绝佳解决方案
- java web开发一个帐号同一时间只能一个人登录
- [leetcode]152. Maximum Product Subarray
- C# 更改系统时间
- FutureTask result的获取
- 常用无线局域网标准
- Node.js基本模块学习(二)
- 怎样实现同一个账户同一时间只能在一个终端登录
- 点击按钮 “加载更多”效果
- There's no Qt version assigned to this project for platform x64
- Xutils简单介绍
- 网络基础之协议-1
- java设计模式——迭代器模式
- 工厂方法模式
- 所谓IIS500内部服务器错误
- MyBatis动态SQL<choose>标签的使用