• 爱奇艺、优酷、腾讯视频 限制设备登录 唯一登录设计原理


    一、唯一登陆原理
    1. 唯一登陆原理设计

    用户第一次登陆之后,保存当前用户登录的设备+凭证(token),当第二次登陆时,先判断同一设备的用户是否已经登录,如果已经登陆过,就将第一次登陆的凭证置为失效,第二次登陆凭证为有效。

    前端每个一段时间调用后端接口,校验登陆凭证是否有效,无效时,强制跳转登录页面,进行重新登陆即可。

    2. 唯一登陆流程

    登录时,先根据用户user_id查询日志表:
    第一种情况(当第一次登录时):

    • 1.查询用户user_id查询日志表时,用户轨迹对象为空。
    • 2.将登录用户轨迹数据逻辑状态置为0
    • 3.将用户登录信息插入用户轨迹表中

    第二种情况(当非登录时):

    • 1.查询用户user_id查询日志表时,用户轨迹对象不为空。
    • 2.把此时登录的token设置到轨迹对象中。
    • 3.将第一次登录数据逻辑删除状态置为1
    • 4.将用户轨迹数据进行更新操作,进行录数据逻辑删除。
    • 5.将登录用户轨迹数据逻辑状态置为0。
    • 6.将最新用户登录信息插入用户轨迹表中。
    • 7.当最新用户登录信息插入插入成功时,并且登录token不为空时,将redis中,第一次登录token的key删除。
    3. 登录轨迹表
    CREATE TABLE `user_login_log` (
      `id` int NOT NULL AUTO_INCREMENT COMMENT '流水号ID',
      `user_id` int DEFAULT NULL COMMENT '用户ID',
      `login_ip` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '登录IP',
      `login_time` datetime DEFAULT NULL COMMENT '登录时间',
      `login_token` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '登录token',
      `channel` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '渠道',
      `equipment` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源',
      `is_delete` int DEFAULT NULL COMMENT '是否删除',
      `message_id` varchar(255) DEFAULT NULL COMMENT '消息ID',
      PRIMARY KEY (`id`),
      UNIQUE KEY `unique_message_id` (`message_id`) USING BTREE COMMENT '消息ID'
    ) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8mb3 COMMENT='登录日志表';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    算法竞赛入门【码蹄集新手村600题】(MT1401-1450)
    Interceptor内存马
    SD NAND 的 SDIO在STM32上的应用详解(中篇)
    【历史上的今天】8 月 19 日:大型计算机先驱和小型机之父诞生;中国雅虎邮箱成历史
    【力扣hot100】day3
    frp内网穿透
    如何将不同类别信息发送到kafka的不同通道中
    【CSDN Daily Practice】【贪心】文本左右对齐
    算法ppt练习题(给黄成个大逼兜)
    Kafka(二)、Kafka与SpringBoot集成
  • 原文地址:https://blog.csdn.net/weixin_40816738/article/details/126842663