首页 > 解决方案 > Nodejs 中基于角色的聊天系统

问题描述

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

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

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

标签: javascriptnode.jsbackendrole-based-access-control

解决方案


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

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

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) 过滤,当他们批准聊天时,您更改设置并启用聊天返回主队列并显示消息


推荐阅读