单用户登录系统的设计与实现方案

来源:互联网 发布:韩国电影软件 编辑:程序博客网 时间:2024/04/29 04:46

 

功能目的:
对目前开发的 Web 应用系统实现单用户登录。即不允许两个人同时使用同一个账号登陆。

功能分析:
由于本系统为为收费会员提供服务,为防止会员间共同使用同一账号,影响公司收入,应该实现会员的单用户登录功能。
单用户登录功能需要涉及很多方面,一是鉴别用户是否登录,二是鉴别一个账号是否在两个不同的地方登陆。
鉴别会员是否登录,用session验证即可;但是该怎样鉴别账号在那个地方登陆呢?
用 用户名+ip+当前时间+的混合字串的MD5代码可以实现唯一的hash编号。

功能实现:
单点登录系统中设置 2 个表:
用户表member,包含 userid,username,password,hits 4个字段。
在线用户表online,包含id,userid,userip,logtime,hash,hits 6个字段。
用户登录时,写入一条记录到online,并使online.hits = member.hits,member.hits++;
之后用户每向服务器请求一次,首先判断下member.hits - online.hits = 1 是否成立
如果成立 online.hits++,member.hits++;
如果不成立则 说明有其它用户登录,被强制下线(清除在线状态,清除登录状态,并在客户浏览器提示“该账号在其他地方登陆,您被强制下线”)。

该功能工作流程大致如下:
首先 用户A->使用test账号登陆->test加入online表->发送请求->单用户检验->通过->执行请求
然后 用户B->使用test账号登陆->test加入online表->发送请求->单用户检验->通过->执行请求
之后 用户A->发送请求->单用户检验->未通过->强制下线  用户B->发送请求->单用户检验->通过->执行请求

这样系统就可以实现同一个账号同一时间只能有1人使用。

原创粉丝点击