【问题标题】:Role-based chat system in NodejsNodejs 中基于角色的聊天系统
【发布时间】:2021-03-08 15:54:00
【问题描述】:

我已经使用 socket.io 和 nodejs 实现了一个聊天功能。但现在我想实现一个基于角色的聊天应用程序。例如,如果有人想与更高职位的人交流,首先需要发送请求。我已经实现了一个聊天请求系统(类似于好友请求)。但我不知道如何使它基于角色。 在这种情况下,访问控制包会有所帮助吗?

我在用户模型中添加了一个角色属性。我想创建一个中间件来检查用户的角色以及它想要向谁发送消息。如果允许,它可以继续“聊天”,但如果不允许,我希望它重定向到请求端点。我想知道这个逻辑是否可行。如果没有,我还能做得更好。

编辑:这个带有中间件的解决方案似乎可以工作:)。如果您有更好的想法,请回答我的问题

【问题讨论】:

标签: javascript node.js backend role-based-access-control


【解决方案1】:

我没有足够的信息来确切了解您的情况,但听起来您不需要访问控制。这是我给你的建议:

  • 您需要为每个用户存储一个角色。
  • 当某人第一次发送消息时,您检查他们是否可以发送消息,执行类似以下操作:

const senderRole = 'normal', receiverRole = 'extreme'; // YOU NEED TO FETCH THESE FROM YOUR DB

const roles = ['normal', 'better', 'extreme', 'best'];

if (roles.indexOf(senderRole) < roles.indexOf(receiverRole)) {
  // need to ask for request
}
  • 当他们需要请求时,您会打开与接收者的聊天,但在您的数据库中设置聊天模型的特殊设置:(access=false)

  • 当接收者进入应用程序时,他们有一个特殊的聊天部分,使用选项 (access=false) 过滤,当他们批准聊天时,您更改设置并启用聊天返回主队列和显示消息

【讨论】:

    猜你喜欢
    • 2011-09-28
    • 2021-09-16
    • 2016-10-02
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    相关资源
    最近更新 更多