python后端,一个账户,多设备登录管理

一个账号,多台设备同时登陆的问题,设计以及实现
参考这篇文章:

https://www.alibabacloud.com/help/zh/tair/use-cases/manage-multi-device-logon-from-a-single-user-by-using-tairhash

1.0 设计思路

利用的是Redis,主设备的保存问题,可使用MySQL进行设置实现
同时允许3台设备在线

只是设计思路,数据库的使用,可以按照公司的要求
多设备
Redis实现的设计
在这里插入图片描述
参考
云原生内存数据库设计
在这里插入图片描述

Tair自研的拓展数据结构TairHash,实现用户多设备登录管理。TairHash不仅支持Key级别的过期设置,同时还支持Field级别的过期操作。可以将用户ID设置为Key、将设备类型设置为Field、将用户Token设置为Value,同时可对Field设置过期时间,简单又高效。

2.0 基于tair 实现

安装依赖

pip3 install tair

代码

# -*- coding: utf-8 -*-
#!/usr/bin/env python
import time
from tair import Tair
from tair import ResponseErrordef get_tair() -> Tair:"""该方法用于连接Tair实例。* host:Tair实例连接地址。* port:Tair实例的端口号,默认为6379。* username:Tair实例的账户,可不填,使用默认账号登录。* password:Tair实例的密码。"""tair: Tair = Tair(host = "r-bp************.redis.rds.aliyuncs.com",port = 6379,db = 0,username = "",password = "D****123",)return tairdef add_user_pass(userID: str, device: str, token: str, timeout: int) -> bool:"""该方法为通过EXHSET命令,将用户登录信息存入TairHash数据结构中。* 将用户ID(userID)设置为Key。* 将设备类型(device)设置为Field。* 将用户Token(token)设置为Value。* 将用户Token的过期时间设置为Ex。"""try:tair = get_tair()ret = tair.exhset(userID, device, token, ex=timeout)return ret == 1except ResponseError as e:print(e)return Falsedef print_up(userID):"""该方法打印未过期的用户Token信息。"""for i in tair.exhgetall(userID):print('{}:{}'.format (userID,i))if __name__ == "__main__":tair = get_tair()# 添加user1、user2测试数据。user_1 = "user1"user_2 = "user2"add_user_pass(user_1, "phone", "token_123", 5)add_user_pass(user_1, "pad", "token_124", 10)add_user_pass(user_2, "pad", "token_456", 10)add_user_pass(user_2, "pc", "token_457", 10)# 等待6s。print("Wait 6 seconds")time.sleep(6)# 打印此时未过期的用户Token信息。print_up(user_1)print_up(user_2)

3.0 基于Redis的实现(配合自己公司的框架)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/92161.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pytorch 的基本概念和使用场景介绍

文章目录 一、基本概念1. 张量(Tensor)2. 自动微分(Autograd)3. 计算图(Computation Graph)4. 动态计算图(Dynamic Computation Graph)5. 变量(Variable) 二、…

热烈祝贺蜀益表面处理成功入选航天系统采购平台

经过航天系统采购平台的严审,眉山市蜀益表面处理科技有限公司成功入选中国航天系统采购供应商库。航天系统采购平台是航天系统内企业采购专用平台,服务航天全球范围千亿采购需求,目前,已有华为、三一重工、格力电器、科大讯飞等企…

笔记本电脑连接不上wifi怎么办?3种方法轻松搞定!

在现代社会中,无线网络已经成为人们日常生活和工作中必不可少的一部分。然而,有时候我们可能会遇到笔记本电脑无法连接到Wi-Fi网络的问题。这种情况可能会让人感到困扰,影响正常的工作和娱乐体验。那笔记本电脑连接不上wifi怎么办呢&#xff…

C语言:字符函数和字符串函数(一篇拿捏字符串函数!)

目录 求字符串长度: 1. strlen(字符串长度) 长度不受限制函数: 2. strcpy(字符串拷贝) 3. strcat(字符串追加) 4. strcmp(字符串比较) 长度受限制函数: 5. strncpy(字符串拷贝) 6. strncat(字符串追加) 7. strncmp(字符串比较) 字…

WPF读取dicom序列:实现上一帧、下一帧、自动播放、暂停

一、整体设计概况 创建WPF程序使用.Net Framework4.8定义Image控件展示图像增加标签展示dcm文件信息规划按钮触发对应的事件:上一帧、下一帧、自动播放、暂停、缩放、播放速率二、页面展示 三、代码逻辑分析 Windows窗体加载Loaded事件:生成初始图像信息Windows窗体加载Mous…

JVM的故事——虚拟机类加载机制

虚拟机类加载机制 文章目录 虚拟机类加载机制一、概述二、类加载的时机三、类加载的过程四、类加载器 一、概述 本章将要讲解class文件如何进入虚拟机以及虚拟机如何处理这些class文件。Java虚拟机把class文件加载到内存,并对数据进行校验、转换解析和初始化&#…

集成跨境电商ERP(积加、易仓、马帮等)连接多个应用

场景描述: 基于跨境电商开放平台(积加、易仓、马帮等)能力,无代码集成跨境电商ERP与多个应用互通互连。通过Aboter可搭建业务自动化流程,实现多个应用之间的数据连接。 连接器: 积加ERP马帮ERP易仓ERP……

《Go 语言第一课》课程学习笔记(十四)

接口 认识接口类型 接口类型是由 type 和 interface 关键字定义的一组方法集合,其中,方法集合唯一确定了这个接口类型所表示的接口。type MyInterface interface {M1(int) errorM2(io.Writer, ...string) }我们在接口类型的方法集合中声明的方法&#…

香港服务器快还是台湾服务器快?

​  基于机房位置不同,香港服务器相对于台湾服务器在访问速度方面有一定的优势。香港服务器拥有CN2线路,因此访问速度较快。在网络服务商方面,中华电信等台湾服务商提供的带宽也具有很高的性价比。 香港服务器对大陆用户的影响 对于大陆用户…

【docker】docker的一些常用命令-------从小白到大神之路之学习运维第92天

目录 一、安装docker-ce 1、从阿里云下载docker-cer.epo源 2、下载部分依赖 3、安装docker 二、启用docker 1、启动docker和不启动查看docker version 2、启动服务查看docker version 有什么区别?看到了吗? 3、看看docker启动后的镜像仓库都有什…

计算机毕设之基于python+echarts+mysql的图书馆可视化管理系统(文档+代码+部署教程)

系统阐述的是一款图书馆可视化管理系统的设计与实现,对于Python、B/S结构、MySql进行了较为深入的学习与应用。主要针对系统的设计,描述,实现和分析与测试方面来表明开发的过程。开发中使用了 django框架和MySql数据库技术搭建系统的整体架构…