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

 

功能目的:
对目前开发的 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人使用。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值