NodeJS 管理员完全自主更改用户名的用例[已关闭]

wfsdck30  于 2023-04-05  发布在  Node.js
关注(0)|答案(1)|浏览(111)

已关闭,此问题需要更focused,目前不接受回答。
**想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

9天前关闭。
此帖子已于4天前编辑并提交审核,未能重新打开帖子:
原始关闭原因未解决
Improve this question
我们正在开发一个WebRTC应用程序,它有三个组件:

  • android(辅助眼镜设备)
  • server(nodejs backend)
  • webapp(reactjs frontend)

这使得眼镜设备和医疗保健应用程序的网络应用程序之间能够进行双向通信。其中一个要求允许具有最高角色的管理员编辑跨组织的任何用户的用户名。
作为一个后端开发人员,我发现这个要求很奇怪,因为我没有遇到过任何这样的应用程序。为了实现调用功能,我们使用了一个内存Mapusername-〉socketId作为一个试点版本,用于一个/多个组织。
如果两个用户正在通话,管理员(有意或无意)更改了任何一方的用户名,但服务器只能在用户名与客户端上一个PING事件相同时才能更新套接字,则会出现问题。(我们使用的是socket.io):
1.断开连接的用户可能无法重新连接到他们先前的活动视频呼叫,如果他们的用户名被更改,因为服务器无法检查这一点。
1.由于存在UNIQUE约束,因此处理更新用户的代码是多余的。
我愿意重构代码,用userId -> socketIdMap套接字,但最终这将通过不必要的R/W操作存储在DB中。
无论用户的角色如何,用户名都应不可编辑。
为了解决细粒度地限制用户根据其相关角色更改用户名的问题,应该遵循哪些设计模式?

ee7vknir

ee7vknir1#

您可以按如下方式计划用户名更改:

  • 您可以创建一个表或其他东西,用于存储预定的用户名更改
  • 每当一个活动(通话或其他)结束时,系统将检查是否还有其他活动。如果有,则什么也不做。否则,用户名将被更改,计划将被删除
  • 当此转换时间仍然适用时,用户无法启动新活动
  • 可选地,可以应用最大等待时间,因此,如果用户在2小时(或您的首选项的最大时间)后仍有活动,则无论如何都将更改用户名
  • 管理员可以选择安排这样的更改或立即执行

这样,用户名和内存Map将一直工作到用户完成他/她的活动,除非管理员选择立即执行更改或最大等待时间过去。

相关问题