天天看點

愛奇藝、優酷、騰訊視訊 限制裝置登入 唯一登入設計原理

文章目录

  • ​​一、唯一登陆原理​​
  • ​​1. 唯一登陆原理设计​​
  • ​​2. 唯一登陆流程​​
  • ​​3. 登录轨迹表​​
一、唯一登陆原理

1. 唯一登陆原理设计

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

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

2. 唯一登陆流程

  • 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='登录日志表';