当前位置: 首页 > 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个地方。…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

dify打造数据可视化图表

一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...