【发布时间】:2016-01-17 02:45:54
【问题描述】:
我一直在玩socket.io的聊天,我有一个问题:我如何区分聊天室中的管理员用户和普通用户?我希望管理员拥有像踢人和禁止人这样的权力,但我的用户没有。
我正在使用 Symfony 开发我的应用程序,我想将其用户数据库用于聊天用户。我正在为我的 Symfony 应用程序的用户使用FOSUserBundle。它们被分成多个组,所以我有admin 组和其他组。
admin 组具有ROLE_ADMIN,这意味着其中的每个用户都具有该角色。即管理员组,该组中的每个用户都应有权禁止、踢出、静音等聊天室中的其他用户。
为了在聊天中使用我的 Symfony 用户,我一直在阅读 Redis 以获取他们的会话,但我不确定如何区分我的管理员用户和普通用户。如何防止普通用户向服务器发出用户无权访问的请求?因为任何人都可以发出请求,但是如果这些请求来自存储在 Apache 服务器上的 MySQL 数据库中的用户,我如何验证这些请求?
如果不是 Symfony,如何在普通的 PHP 应用程序中做到这一点?最后,admin如何定义并不重要,重要的是如何将他连接到Node服务器以及如何使Node服务器与我的用户数据库一起工作。
我的想法是简单地加密用户数据并将其发送到节点服务器,然后在那里解密。只有两台服务器知道私钥,因此即使客户端获得加密数据,他也无法向另一个客户端发出请求。我可能会做一些 IP 检查和时间戳。然后可以使用节点服务器上的解密数据来判断用户是否是管理员,并允许他发送某些请求。这是个好主意还是有更好的方法?
【问题讨论】:
-
不是重复的。这个问题很具体。
标签: php node.js sockets symfony socket.io