生产环境解决用户登录问题的实践
目录
- 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个地方。…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...

nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...