关于如何做到限制用户单一登录的设计与实现

Demo ---使用Spring boot+vuejs 模拟区块链 --- 节点共识机制的实现

(一般而言,当一个账户登录后,另起一个浏览器,或者再开一个网页重新登录此账户,此账户依旧可以被再次开启。)

这个问题产生在关于区块链多节点验证时。若当前节点,可以被无限复制,那么就可以自己验证自己的区块,从而导致了区块验证的漏洞,无法体现多节点验证区块的一致性及区块的可信程度。

需求描述:

  例如,当一个账户在chrom浏览器登录后,再开一个chrom浏览器页面,再用同一个账户登录,这时候,就会出现提示,用户已被登录,无法重复登录。即,所谓的单一登录。

需求解决:

这里是使用spring boot 来实现的demo。这里就不提供源代码了。因为项目还没完成,这只是其中一小部分功能,无法上传到github上。

我这里的想法是。因为传统一个账户登录网站的过程,通常为用户在浏览器端填写用户密码,然后浏览器发送数据给服务器,服务器响应数据库,查询判断,然后响应用户,每次用户登录都需要进行一次数据库连接。而产生的数据也会经常性的被后面的网站功能使用到。

因而,这里我想到了缓存。而缓存最常见的即是redis。

此账户在登录成功后,从数据库会返回一个完整的个人信息Role,我把Role这个对象存进了redis内。在每次调用login登录的时候,都会去遍历一下redis的这个缓存空间,若发现已存在此用户,就直接返回提示信息。

这里有产生了一个问题。即,如何准确检索出此用户为已登录用户。

因为reids是一个key-value存储的,所以key值唯一。因而,使用拼接字段,key=“role”+id,即可产生唯一标识。这个标识即代表了此账户。每次用户需要查询redis时,只需要这样拼接出key,即可快速准确检索出信息。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值