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


    一、唯一登陆原理
    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
  • 相关阅读:
    【PG】PostgreSQL逻辑备份(pg_dump)
    Linux文件权限
    Java实现自动玩王铲铲的致富之路小程序游戏
    百战c++(数据库1)
    1382. 将二叉搜索树变平衡 ●●
    net 基于asp.net的计算机网络课程题库考试系统
    [C#][opencvsharp]C#使用opencvsharp进行年龄和性别预测支持视频图片检测
    HTTP文件服务
    Vue混入mixins,让你减少一半代码
    Jetson Xavier NX 与笔记本网线连接 ,网络共享,ssh连接到vscode
  • 原文地址:https://blog.csdn.net/weixin_40816738/article/details/126842663