每日一面 - 限制用户设备

简介: 每日一面 - 限制用户设备
问题参考自: https://www.zhihu.com/question/439438146 ,答案为个人原创

用户登录,保存30天的免登,只允许两个设备登录,如果有第三个设备登录,踢掉第一个。改密码的时候,所有设备需要下线。这个逻辑怎么实现呢?

使用 Redis 存储用户 ,登录的设备实现,利用 ZSET。

存储结构如下:


微信图片_20220624203233.jpg


每个用户一个 ZSET(假设就是以用户 id 作为 ZSET 的 KEY),里面的 KEY 为设备 id,value 为登录时间戳。

当用户登录时,使用 lua 脚本(防止并发导致登录设备多于 2 个)检查设备:

ZSCORE 判断设备是否存在以及登录时间
如果存在:
  ZADD就更新SCORE为当前时间戳
如果不存在:
  ZCARD 用户id 获取当前用户有多少设备
  如果设备数量 >= 2 则移除除了最后一个的其他设备(可以通过ZRANGE获取最后一个KEY,ZSCORE获取其分数之后ZREMRANGEBYSCORE删除小于这个分数的所有KEY)
  ZADD设置设备id为KEY,当前时间戳为SCORE
设置ZSET过期时间为30天,减少30天内没有设备登录时检查登录态的判断消耗

当用户请求需要登录态后的 API,检查登录态时:

ZSCORE 判断设备是否存在以及登录时间
如果设备存在存在并且登录时间与当前时间间隔小于30天,则有效。
否则,登录态失效,需要重新登录

修改密码,所有设备下线:

删除这个ZSET
相关文章
|
1月前
|
安全 数据安全/隐私保护 智能硬件
智能家电设备连接与验证的流程
智能家电设备连接与验证的流程
71 1
|
1月前
|
JavaScript
亚丁号云控之云控设备
亚丁号云控之云控设备
22 0
|
6月前
|
存储 网络协议 数据安全/隐私保护
逆向USB设备共享:利用内网穿透让远程设备访问本地USB设备
逆向USB设备共享:利用内网穿透让远程设备访问本地USB设备
逆向USB设备共享:利用内网穿透让远程设备访问本地USB设备
|
7月前
计算机维修的工具与设备
计算机维修的工具与设备。
22 1
|
算法 编译器 C语言
达夫设备简单介绍
达夫设备简单介绍
123 1
|
11月前
|
数据采集 人工智能 算法
基于设备数据的设备关系绑定
本文讨论了实体分割和物品追踪在物流行业的应用。物品追踪系统可实现物品在转场过程中的实时追踪,从而提高物流效率,减少误差和损失。实体分割技术可以将快递包裹中的不同物品进行分割和识别,从而使其更易于管理和追踪。文章还探讨了实体分割和物品追踪技术在不同物流场景中的应用,并讨论了相关技术的优缺点以及未来的发展方向。
98 0
|
数据采集 移动开发 算法
论设备指纹的唯一性:始于硬件ID,终于云端交互
互联网时代,用户拉新几乎是所有公司必须面对的话题,从投入运营的初期阶段到快速成长期,再到稳定的成熟阶段,拉新贯穿了产品的整个生命周期,毕竟有了新用户才能创造出价值。
428 0
论设备指纹的唯一性:始于硬件ID,终于云端交互
|
存储 JSON 物联网
设备影子 | 学习笔记
快速学习 设备影子
560 0
设备影子 | 学习笔记
|
物联网 API
设备端和服务端检测设备是否在线的方法
使用物联网时,有时设备端和服务端都需要检测设备是否在线。
1127 0
|
物联网
IoT设备身份三元组烧录方案汇总
4种方案,解决设备身份问题
12436 0
IoT设备身份三元组烧录方案汇总