如何将 actioncable 聊天仅锁定为管理员?

How to lock actioncable chat to admins only?

大家好,感谢您花时间查看我的问题。

所以稍微解释一下标题可能不公平,

我想了解我可以着手设置检查角色的方法的最佳方法,如果是管理员,则继续让该人进入 actioncable 聊天,如果不是,则阻止所有连接。

所以总结一下:因为这是实时的,我想我需要在 actioncable room/connection 处理程序的 js 部分进行某种开始检查,然后在 ruby 端进行检查的事情。

我不想要一个完整的 运行 下来,因为这对你来说太过分了。

只是一块小垫脚石

我的第一个简单方法是 只需在对消息创建操作之前检查角色,但仍然会打开与 actioncable/redis/chat.

的连接

如前所述,如有任何指点,我们将不胜感激

提前致谢。

解决方案

def connect
  self.current_user = find_verified_user
  logger.add_tags 'ActionCable', current_user.email, current_user.access
end

protected
def find_verified_user
  if (current_user = User.find_by_id cookies.signed['user.id'])
    if(current_user.access == "mod")
      current_user
  else
    reject_unauthorized_connection
  end
end

结束 结尾 结束