如何实现一个账号仅能一个终端登录呢
2017-09-12 14:42
330 查看
用户ID:用户登录session_id
用户每次登录都将session_id存入到(memcache/redis),每次操作都验证一下当前用户是否对应session_id。否则就踢下线。
拓展:可以将$_SERVER信息存储起来,用户每次登录都提示一下,可以知道自己账号是否安全!
在账户表的基础上,我新建了一个账户account_session表,用来记录登录账户的account_id和最新一次登录成功用户的session_id,然后首先要修改登录方法:每次登录成功后,要将登录用户信息写入Session的同时还要更新account_session表里相应账户的session_id(当然,如果是第一次登录时,进行的便是插入动作),然后要修改获取当前用户信息的方法,在里面要做两重判断,首先,看当前会话是否存在登录用户信息,如果没有,则肯定是未登录,不再赘述,如果有,还要再进一步要用当前会员里存的account_id去account_session表查询最新的session_id,与当前会员中的session_id作比较,如果是一致的,说明当前会话是最新的会话,登录状态正常,如果不一致,说明在当前登录会话创建后,被新的登录会话覆盖掉了,当前的登录会话已经失效,这时候,服务器应该删除当前的登录会话并返回提示给客户端,至此,限制账户同一时间单终端登录功能便实现了。
用户每次登录都将session_id存入到(memcache/redis),每次操作都验证一下当前用户是否对应session_id。否则就踢下线。
拓展:可以将$_SERVER信息存储起来,用户每次登录都提示一下,可以知道自己账号是否安全!
在账户表的基础上,我新建了一个账户account_session表,用来记录登录账户的account_id和最新一次登录成功用户的session_id,然后首先要修改登录方法:每次登录成功后,要将登录用户信息写入Session的同时还要更新account_session表里相应账户的session_id(当然,如果是第一次登录时,进行的便是插入动作),然后要修改获取当前用户信息的方法,在里面要做两重判断,首先,看当前会话是否存在登录用户信息,如果没有,则肯定是未登录,不再赘述,如果有,还要再进一步要用当前会员里存的account_id去account_session表查询最新的session_id,与当前会员中的session_id作比较,如果是一致的,说明当前会话是最新的会话,登录状态正常,如果不一致,说明在当前登录会话创建后,被新的登录会话覆盖掉了,当前的登录会话已经失效,这时候,服务器应该删除当前的登录会话并返回提示给客户端,至此,限制账户同一时间单终端登录功能便实现了。
相关文章推荐
- SharePoint基于windows验证的如何通过组策略实现IE自动以当前域账号登录SP站点
- 如何实现单点登录(一台计算机,只能运行一个客户端)
- 如何写一个防止同账号不同ip登录的程序?
- java如何写一个防止同账号不同ip登录的程序?
- 如何用java图形化界面实现一个登录窗口
- php 实现同一个账号同时只能一个人登录
- asp.net 使用application实现单点登录(一个账号只能在一个地方登录)
- asp.net mvc 简单实现一个账号只能在一个地方登录
- 怎样实现同一个账户同一时间只能在一个终端登录
- 单一用户登录,即当前用户登录后要踢出前一个登录,即做出踢人效果,如何实现?
- 如何做到同一个账号同一时段只能登录一个
- 2.如何让一个项目的用户目前只能是姓名登录,优化为增加一个字段为姓名和用户名同时都可以实现登录 ,并且用户名不能使中文?
- Apache shiro如何实现一个账户同一时刻只有一个人登录
- normal用户同一时间只能有一个登录session,如何实现多个登录?
- 如何用过滤器实现一个登录的权限控制呢?
- MF中使用GPRS:如何通过一个串口终端实现GPRS Modem拨号上网
- 如何实现立即从终端获得一个字符并返回这个字符_vmin_vtime
- Asp.net 实现只能允许一个账号同时只能在一个地方登录
- Asp.net 实现只能允许一个账号同时只能在一个地方登录
- 如何保证同一个账号同时只能在一个设备登录,账号自动登录