管理员拥有更改用户名的完全自主权的用例[关闭]

问题描述 投票:0回答:1

我们正在开发一个包含三个组件的 WebRTC 应用程序:

  • android(助手玻璃设备)
  • 服务器(nodejs后端)
  • webapp(reactjs 前端)

这可以在医疗保健应用程序的玻璃设备和 Web 应用程序之间实现双向通信。其中一项要求允许具有最高角色的管理员跨组织编辑任何用户的用户名。

作为后端开发人员,我发现这个要求很奇怪,因为我没有遇到过任何这样的应用程序。为了实现呼叫功能,我们使用内存映射

username
->
socketId
作为一个/许多组织的试点版本。

在两个用户都在通话并且管理员有意或无意地更改任何一方的用户名但服务器只有在用户名与之前的 PING 事件相同时才能更新套接字的情况下会出现问题客户端。 (我们正在使用 socket.io):

  1. 如果用户名更改,断开连接的用户可能无法重新连接到他们之前的活动视频通话,因为服务器无法检查这一点。
  2. 处理更新用户的代码是多余的,因为有一个 UNIQUE 约束。

我愿意重构代码以将套接字映射到

userId -> socketId
,但最终这将存储在数据库中,并进行不必要的 R/W 操作。

无论用户的角色如何,用户名都应该是不可编辑的。

解决这个问题的最佳方法是什么?

node.js amazon-web-services security database-design socket.io
1个回答
0
投票

您可以按如下方式安排用户名更改:

  • 您可以创建一个表或其他东西来存储计划的用户名更改
  • 每当一个活动(一个电话或其他什么)结束时,系统会检查是否还有剩余的活动。如果是这样,那么什么都不做。否则,用户名将被更改,时间表将被删除
  • 在此过渡时间仍然适用时,用户无法启动新活动
  • 可以选择最长等待时间,因此,如果用户在 2 小时(或您偏好的最长时间)后仍有活动,则用户名无论如何都会更改
  • 管理员可以选择安排此类更改或立即进行

这样,用户名和内存中的映射将一直有效,直到用户完成他/她的活动,除非管理员选择立即执行更改或最长等待时间已过。

© www.soinside.com 2019 - 2024. All rights reserved.