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.rhkb.cn/news/116314.html

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

相关文章

CAD图纸加密软件——公司核心文件数据防泄密「天锐绿盾」

PC访问地址: isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 数据安全保护系统 数据安全保护系统以全面数据文件安全策略、加解密技术与强制访问控制有机结合为设计思想,对信息媒介上的各种数据资产,实施不同安全等级…

02_nodejs开发环境安装

02 【nodejs开发环境安装】 1.版本介绍 在命令窗口中输入 node -v 可以查看版本0.x 完全不技术 ES64.x 部分支持 ES6 特性5.x 部分支持ES6特性(比4.x多些),属于过渡产品,现在来说应该没有什么理由去用这个了6.x 支持98%的 ES6 特…

jvm 新生代的区域划分

虚拟机将内存分为一块较大的 Eden 空间和两块较小的 Survivor 空间,每次分配内存只使用 Eden 和其中一块 Survivor。发生垃圾收集时,将 Eden 和 Survivor 中仍然存活的对象一次性复制到另外一块 Survivor 空间上,然后直接清理掉 Eden 和已用过…

耐蚀点蚀镀铜工艺

引言 随着5G技术的推出,导致电子电路和IC基板在设计中要求更高的密度。由于5G应用的性质,这些设计中的高可靠性和出色的电气性能也越来越重要。为了满足5G应用和其他下一代设备平台的需求,逐渐建立了使用改良半加成加工(mSAP)制造电路板的制…

安达发|生产计划排程APS系统整体结构引领企业智能化生产

随着科技的不断发展,企业对于生产计划排程的需求也在不断提高。在过去的生产计划管理中,企业往往需要根据销售订单或销售报表来分配生产加工任务,这种方式容易导致生产加工不均衡,影响企业的竞争力。为了解决这一问题,…

对ioc的简单理解

最近闲着无聊,又把ioc梳理了一遍,一边看一边满脑子是王宝强的“啥啥啥,这又是个啥”的表情包。 一会注入、一会依赖、一会又自动装配的……哎……还好有了点头绪。 ioc的概念 1、ioc是什么?有什么用? 老生常谈&…

设计模式备忘录+命令模式实现Word撤销恢复操作

文章目录 前言思路代码实现uml类图总结 前言 最近学习设计模式行为型的模式,学到了备忘录模式提到这个模式可以记录一个对象的状态属性值,用于下次复用,于是便想到了我们在Windows系统上使用的撤销操作,于是便想着使用这个模式进…

【Linux】fork函数的基础知识

文章目录 前言一、fork的返回值二、常见问题 1.为什么fork要给子进程返回0,给父进程返回子进程pid?2.一个函数返回两次值怎么理解? 3.一个变量怎么会有不同的内容? 4.fork函数干了什么? 前言 fork初识: …

【分布式搜索引擎elasticsearch】

文章目录 1.elasticsearch基础索引和映射索引库操作索引库操作总结 文档操作文档操作总结 RestAPIRestClient操作文档 1.elasticsearch基础 什么是elasticsearch? 一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能 什么是…

电脑莫名其妙重启 为设备 ROOT\DISPLAY\0000 加载驱动程序 \Driver\WUDFRd 失败

卸载向日葵即可解决!!!!!下面是报错日志,估计是远程连接导致的问题

10. selenium API (二)

目录 1. 多层框架/窗口定位 2. 下拉框处理 2.1 前端界面 2.2 代码 3. 针对 alert 弹窗进行操作 3.1 前端界面 3.2 代码 4. 文件提交 4.1 前端界面 4.2 代码 5. 显示等待 6. 操作浏览器滚动条 7. 截图 8. 浏览器关闭 9. 窗口切换 在上篇文章中,我们学…

【仿写spring之ioc篇】二、bean生命周期中的创建以及属性赋值

扫描类 这个类就不多说了,基本所有框架都要有这一步,这里主要关注我们目前要实现的方法,其他的具体方法可以查看源码 isComponent方法 /*** 扫描所有带有Component注解的java类,放入到BeanRegistry** return boolean*/public bo…

vcs仿真教程(查看断言)

VCS是在linux下面用来进行仿真看波形的工具,类似于windows下面的modelsim以及questasim等工具,以及quartus、vivado仿真的操作。 1.vcs的基本指令 vcs的常见指令后缀 sim常见指令 2.使用vcs的实例 (1)新建文件夹: …

C++STL——deque容器详解

纵有疾风起,人生不言弃。本文篇幅较长,如有错误请不吝赐教,感谢支持。 💬文章目录 一.deque容器的基本概念二.deque容器常用操作①deque构造函数②deque元素操作③deque赋值操作④deque交换操作⑤deque大小操作⑥deque插入和删除…

vue3中axios的使用方法

在Vue 3中使用axios发送HTTP请求的方法与Vue 2中基本相同。首先,需要安装axios库: npm install axios然后,在Vue组件中引入axios: import axios from axios;接下来,可以在Vue组件的方法中使用axios发送HTTP请求。例如…

Linux 系统运维工具之 OpenLMI

一、前要 OpenLMI(全称 Open Linux Management Infrastructure)即开放式的 Linux 管理基础架构。OpenLMI 是一个开源项目,用于管理 Linux 系统管理的通用基础架构。它建立在现有工具基础上,充当抽象层,以便向系统管理…

英码深元“三位一体”AI场景化解决方案,助力多地化工园区快速实现智慧化转型!

我国是世界公认的化工大国,同时也是崛起中的化工强国。近年来多起重大爆炸事故暴露出我国化工园区安全问题突出,特别是在安全风险管控数字化转型、智能化升级方面存在明显短板和不足,尤其突出的痛点:化工园区的日常管理方式较为粗…

VBA_MF系列技术资料1-172

MF系列VBA技术资料 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧,我参考大量的资料,并结合自己的经验总结了这份MF系列VBA技术综合资料,而且开放源码(MF04除外),其中MF01-04属于定…

【数据结构】带头双向循环链表及其实现

目录 1.带头双向循环链表 2.带头双向循环链表实现 2.1初始化 2.2销毁 2.3头插 2.4链表打印 2.5头删数据 2.6尾插数据 2.7尾删数据 2.8链表判空 2.9查找一个数据 2.10在pos位置前插入数据 2.11删除pos位置 2.12求链表的长度 2.顺序表和链表的比较 1.带头双向循环…

【python爬虫】4.爬虫实操(菜品爬取)

文章目录 前言项目:解密吴氏私厨分析过程代码实现(一)获取与解析提取最小父级标签一组菜名、URL、食材写循环,存列表 代码实现(二)复习总结 前言 上一关,我们学习了用BeautifulSoup库解析数据和…