生产环境解决用户登录问题的实践
目录
- 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是权重࿰…...

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个地方。…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...

FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...