当前位置: 首页 > news >正文

生产环境解决用户登录问题的实践

目录

  • 1 前言
  • 2 问题提出
  • 3 问题分析和解决
  • 4 技术分析和改进
  • 5 结语

1 前言

在开发管理软件平台为美术馆时,我们致力于提供一个多系统集成平台,其中包括艺术品管理、志愿者管理和数字资产管理等子系统。为了确保用户享有流畅的体验,我们采用了一个统一用户身份认证系统,将这些子系统紧密相连。然而,对于一个复杂的多系统平台来说,数据的一致性尤为关键,因此我们引入了数据库同步机制。这意味着当在门户系统中添加新用户或进行权限更改时,这些变动必须及时传播到各个子系统的数据库中,以确保用户在不同系统中的体验保持一致。
在这里插入图片描述

数据库同步的作用不仅在于保证用户数据的一致性,还有助于简化管理和维护。当用户信息只需在一个系统中进行维护,而不是分散在多个系统中,系统管理员能够更高效地管理用户数据。这有助于减少潜在的错误和确保数据的准确性,提供更出色的用户体验。因此,数据库同步机制在多系统集成平台的开发中扮演了至关重要的角色。

2 问题提出

项目交付后,系统一直稳定运行,然而,有一天美术馆的技术人员联系我,报告了一个用户登录问题。原来,美术馆调来一位新的领导,技术人员使用管理员账户把这位领导做为新用户添加了系统,但奇怪的是,尽管该领导通过统一用户身份认证系统,可以登录到其他系统,却无法正常进入数字资产管理系统。这情况引发了紧急排查和解决的需求。
在这里插入图片描述

3 问题分析和解决

用户登陆后可以进入其他系统,这表明用户信息确实在统一用户身份认证系统中,并成功同步到其他系统的用户数据库中。然而,数字资产管理系统却呈现出一个空白页面,这明显表明用户在该系统中缺乏相应的权限。问题的根本原因是未为该用户设置适当的权限。此情况之所以出现,是因为用户始终通过统一门户进入系统,而没有尝试直接登录数字资产管理系统。

为了解决问题,我们采取了措施,直接尝试登录数字资产管理系统。结果证实了问题所在,即缺乏用户权限。随后,我们积极与美术馆的技术人员沟通,要求他们使用管理员权限为该用户分配适当的身份和权限,以确保其正常访问数字资产管理系统。最终,这一问题得到圆满解决,确保了系统的稳定性和用户体验。

4 技术分析和改进

问题的根本原因是前端和后端之间的协作不够完善。前端在用户登录后应正确返回权限信息,以确保后端能够根据用户的身份执行适当的跳转,而不会将用户留在一个空白页面。为了解决这个问题,我们采取了以下技术调整:

前端修复。我们对前端代码进行修复,确保即使用户没有相应权限,前端也会正确返回权限信息。这意味着前端将主动向后端发送关于用户权限的信息,而不再保持静默。这一变化使前端和后端之间的数据交流更加完整,确保了信息的完整传递。

后端调整。后端代码也需要相应的调整,以接收前端发送的权限信息,并根据用户的身份执行适当的跳转。这确保了用户可以正常访问系统,即使他们没有特定权限。同时,这也增强了系统的鲁棒性和容错性,提高了用户体验。

这一问题也突显了测试在软件开发中的至关重要性。在这种情况下,如果我们更加注重测试,特别是对边界条件和权限管理进行全面测试,可能会在开发早期发现这个问题。这样既可以减少问题出现的可能性,也可以提高开发效率,确保系统在交付后能够稳定运行,为用户提供出色的体验。测试不仅是问题发现的工具,还是问题预防的关键步骤,应该在整个开发周期中得到充分的重视。
在这里插入图片描述

5 结语

这次经历强调了在开发和测试过程中,即使是微不足道的细节问题也可能对用户体验产生深远的影响。一个看似小小的bug,例如用户无法正常进入系统,可能会引发用户的不满、降低工作效率,甚至损害系统的声誉。因此,我们需要持续关注并改进系统,以确保用户能够获得最佳的体验。

技术调整和改进在确保系统稳定性和用户满意度方面起着关键作用。通过不断学习、优化前后端协作、引入数据库同步技术以及加强全面的测试,我们能够提供更高质量的软件解决方案。这不仅增强了系统的可靠性,还提高了用户满意度,使用户在多系统集成平台上能够无缝地享受艺术管理体验。

从这次经验中,我们也汲取了宝贵的教训,即要对系统的每个细节保持警惕,注重用户反馈,不断改进,以确保我们的软件能够满足用户的需求,并提供无缝、愉悦的使用体验。只有在注重细节并不断迭代改进的基础上,我们才能在竞争激烈的软件开发领域中脱颖而出,为用户提供卓越的服务。

相关文章:

生产环境解决用户登录问题的实践

目录 1 前言2 问题提出3 问题分析和解决4 技术分析和改进5 结语 1 前言 在开发管理软件平台为美术馆时,我们致力于提供一个多系统集成平台,其中包括艺术品管理、志愿者管理和数字资产管理等子系统。为了确保用户享有流畅的体验,我们采用了一…...

通讯协议学习之路:QSPI协议理论

通讯协议之路主要分为两部分,第一部分从理论上面讲解各类协议的通讯原理以及通讯格式,第二部分从具体运用上讲解各类通讯协议的具体应用方法。 后续文章会同时发表在个人博客(jason1016.club)、CSDN;视频会发布在bilibili(UID:399951374) 一、…...

pip安装修改镜像源

使用pip安装报错时,例如 raise ReadTimeoutError(self._pool, None, “Read timed out.”) pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host‘download.pytorch.org’, port443): Read timed out 可以选择国内的镜像源,如下…...

QCC51XX-QCC30XX系列开发教程(实战篇) 之 12.4-空间音频手机侧和耳机侧接口设计时序图

查看全部教程开发请点击:全网最全-QCC51xx-QCC30xx(TWS)系列从入门到精通开发教程汇总(持续更新中) ==================================================================== 版权归作者所有,未经允许,请勿转载。 ==========================================...

Mysql创建视图中文乱码修改docker里的配置

问题现象: 创建的视图查询无数据,查看创建语句得知,where条件里的中文变成了“???”。 在客户端里查询字符编码: show VARIABLES like %char%;就是character_set_server导致的,它配置的竟然不是utf8,…...

uniapp checkbox样式失效,选中框选中按钮不显示

找了很多方法 最后网上一个博主找到了解决方法 在项目的main.css里面 如果你不知道你的css样式在哪个文件夹 直接全局搜索‘ 找到注释两个地方 第一个 checkbox::before 找到这一行 注释箭头指的地方就可以 第二个 checkbox .uni-checkbox-input::before, 注释这两个地方…...

机器学习-最小二乘法

概况 最小二乘法其实就是为数据(二维)拟合出一条直线,为(三维)数据拟合出一个面。来最大程度的是我们的样本点落在该直线上。 使得我们找到一条直线使所以的样本点尽可能靠近该直线,即每个样本点到直线的距离最短。 YWXB,W是权重&#xff0…...

Linux文件管理与用户管理

一、查看文件内容 1、回顾之前的命令 cat命令、tac命令、head命令、tail命令、扩展:tail -f动态查看一个文件的内容 2、more分屏显示文件内容(了解) 基本语法: # more 文件名称 特别注意:more命令在加载文件时并不…...

java中什么是不可变类

什么是不可变类 不可变类是指一旦创建对象后,其状态(属性值)就不能被修改的类。 一个不可变类具有以下特征: 类的实例变量声明为私有的,并且没有提供修改这些变量值的公共方法。类是final的,防止被继承。类的实例变量声明为fin…...

使用Perl和WWW::Mechanize库编写

以下是一个使用Perl和WWW::Mechanize库编写的网络爬虫程序的内容。代码必须使用以下代码:jshk.com.cn/get_proxy 首先,确保已经安装了Perl和WWW::Mechanize库。如果没有,请使用以下命令安装: cpan WWW::Mechanize创建一个新的Pe…...

智荟雄安,创想未来 | 竹云董事长受邀出席雄安新区2023软件和信息技术服务业创新发展论坛并作主题演讲

10月18日,以“智荟雄安 创想未来”为主题的雄安新区2023软件和信息技术服务业创新发展论坛在雄安新区国际酒店会议中心召开。河北省委常委,雄安新区党工委书记、管委会主任张国华出席活动。 中国科学院院士朱鲁华现场致辞,中国工程院院士邬贺…...

【设计模式-1】UML和设计原则

说明:设计模式(Design Pattern)对于软件开发,简单来说,就是软件开发的套路,固定模板。在学习设计模式之前,需要首先学习UML(Unified Modeling Language,统一建模语言&…...

【数据结构】——二叉树的基础知识

数概念及结构 数的分类 二叉树、多叉树 数的概念 树是一种非线性的数据结构,它是由n(n>0)个有限节点组成一个具有层次关系的集合。把它叫做树的原因是它看起来像一颗倒挂的树,也就是说它是跟朝上,而叶朝下的。 有一个特殊的节点&…...

日常bug汇总

1.constraintlayout NestedScrollView 可能会导致NestedScrollView 不滑动 2.截屏 open class SecureFragment : LogLifecycleFragment() {override fun onResume() {super.onResume()if (!BuildConfig.DEV) {requireActivity().window.setFlags(WindowManager.LayoutParam…...

C#使用PPT组件的CreateVideo方法生成视频

目录 需求 实现 CreateVideo方法 关键代码 CreateVideoStatus 其它 需求 我们在使用PowerPoint文档时,经常会使用其导出功能以创建视频,如下图: 手工操作下,在制作好PPT文件后,点击文件 -> 导出 -> 创建视…...

数字化体系如何帮助企业拓展裂变增长渠道?数字化营销体系构建?

在当前的商业环境中,数字不仅仅是数据,还代表着技术和资产。企业数字化正是将数据转化为资产的过程。从信息化时代到数字化时代,企业逐渐将业务和组织、管理和创收都朝着在线化和数据化的方向发展,特别是企业的业务板块。数字化营…...

关于vant 的tabbar功能

1、想要实现tabbar页面A,其他的页面B(非tabbar页面)。 从A页面进入B页面,底部的active选中效果应该被取消掉,但是还是选中A。 按照官网的说法有两个方法 一、根据path路径 二、自定义的model 但是!但是…...

:style动态绑定,但只要页面发生变化就会执行一次方法

1、问题 开发过程中有个需求是遍历列表绘制div,div的样式是后端接口传来的,一开始这种写法,:style“formatStyle(item)”,写在了模板中 这样写发现一个问题,只要页面发生重绘,比如页面输入框输入数字&…...

文件的逻辑结构(顺序文件,索引文件)

所谓的“逻辑结构”,就是指在用户看来,文件内部的数据应该是如何组织起来的。 而“物理结构”指的是在操作系统看来,文件的数据是如何存放在外存中的。 1.无结构文件 无结构文件:文件内部的数据就是一系列二进制流或字符流组成。无明显的逻…...

suricata匹配从入门到精通(五)----二次开发保护规则库

0x00 背景 开源的suricata资源包是没有做加密处理,如果想要保护资源包,需要二次开发修改suricata源码。 本文基于suricata6.0.1 版本https://github.com/OISF/suricata/archive/refs/tags/suricata-6.0.1.zip二开。 0x01 实践 通过debug,跟规则处理相关需要修改2个地方。…...

ide-eval-resetter:突破JetBrains IDE试用期限制的创新方案——2026开发者必备指南

ide-eval-resetter:突破JetBrains IDE试用期限制的创新方案——2026开发者必备指南 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 问题引入:JetBrains IDE试用期限制的痛点分析 作为开发…...

PyTorch 2.8镜像一键部署教程:支持Slurm集群调度的HPC环境快速接入

PyTorch 2.8镜像一键部署教程:支持Slurm集群调度的HPC环境快速接入 1. 镜像概述与核心优势 PyTorch 2.8深度学习镜像是一个经过深度优化的高性能计算环境,专为现代AI工作负载设计。这个预配置环境最大的特点是开箱即用,免去了繁琐的环境配置…...

Python安全开发之简易Xss检测工具(详细注释)

核心代码:import requests # requests 库 - HTTP 请求处理库 # 【常用功能】: # requests.get(url) - 发送 HTTP GET 请求 # requests.post(url, data) - 发送 HTTP POST 请求 # response.text - 获取响应体内容(字符串) #…...

Node.js后端服务开发:搭建调用Lingbot-Depth-Pretrain-ViTL-14的API接口

Node.js后端服务开发:搭建调用Lingbot-Depth-Pretrain-ViTL-14的API接口 你是不是遇到过这样的场景:手头有一个很厉害的AI模型,比如能估算图片深度的Lingbot-Depth-Pretrain-ViTL-14,但不知道怎么把它变成一个方便调用的服务&…...

Anaconda虚拟环境管理:为春联生成模型创建独立Python空间

Anaconda虚拟环境管理:为春联生成模型创建独立Python空间 你是不是也遇到过这种情况?电脑上装了好几个Python项目,有的需要TensorFlow 2.0,有的却只能用TensorFlow 1.x,结果为了运行一个项目,把整个系统的…...

Qt QTabWidget标签页文字方向调校实战:当标签在左侧时,如何让文字乖乖水平显示?

Qt QTabWidget标签页文字方向调校实战:当标签在左侧时,如何让文字乖乖水平显示? 在桌面应用开发中,Qt框架的QTabWidget组件因其灵活性和易用性广受开发者青睐。但当我们尝试将标签页位置调整为左侧时,一个令人头疼的问…...

树莓派Pico硬件重置失效?试试这个C语言强制重置方案(附完整代码)

树莓派Pico硬件重置失效?试试这个C语言强制重置方案(附完整代码) 当你在开发树莓派Pico项目时,可能会遇到这样的情况:硬件重置按钮突然失效,外围设备(比如LED)无法正常复位。传统的B…...

EdisonZhou

AI训练存储选型的演进路线 第一阶段:单机直连时代 早期的深度学习数据集较小,模型训练通常在单台服务器或单张GPU卡上完成。此时直接将数据存储在训练机器的本地NVMe SSD/HDD上。 其优势在于IO延迟最低,吞吐量极高,也就是“数据离…...

【Windows】终止进程、杀掉进程、结束进程

使用资源监视器在任务管理器中点击"性能"选项卡点击"打开资源监视器"切换到"CPU"选项卡在"关联的句柄"搜索框中输入 ui_demo.exe找到对应的进程后,右键点击并选择"结束进程"...

电路设计与漫画艺术的跨界融合

1. 当电路遇见漫画:工程师的艺术表达在大多数人眼中,电路设计是冰冷的数据和复杂的公式,而漫画则是天马行空的创意表达。但作为一名从业十年的硬件工程师,我发现这两者其实有着惊人的相似之处——它们都需要严谨的结构设计&#x…...