用户第一次登陆之后,保存当前用户登录的设备+凭证(token),当第二次登陆时,先判断同一设备的用户是否已经登录,如果已经登陆过,就将第一次登陆的凭证置为失效,第二次登陆凭证为有效。
前端每个一段时间调用后端接口,校验登陆凭证是否有效,无效时,强制跳转登录页面,进行重新登陆即可。
登录时,先根据用户user_id查询日志表:
第一种情况(当第一次登录时):
第二种情况(当非登录时):
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='登录日志表';