我一直在研究使用 ZODB 作为多人视频游戏的持久层。我非常喜欢它与任意面向对象数据结构的无缝集成。但是,我遇到了一个问题,我不知道 ZODB 是否可以为我解决这个问题。
显然,可以使用ClientStorage
ZEO 访问用于持久性的远程数据存储。虽然这在受信任的本地网络中很好,但如果没有在开放网络中适当的授权和身份验证,就无法做到这一点。
所以我想知道,是否有机会用 ZODB 实现以下概念:
在服务器端,我希望运行一个 ZEO 服务器以及一个游戏世界的模拟,它可以作为 ZEO 服务器上的完全授权客户端运行(或使用与 ZEO 服务器相同的文件存储)。
在客户端,我需要对 ZEO 服务器进行非常有限的读/写访问,以便客户端只能查看其用户应该知道的信息(例如他们角色的周围区域)并且只能修改相关信息到他们的角色可以执行的动作。
服务器必须使用某种细粒度的授权方案来施加这些限制。所以我需要能够告诉服务器用户 A 是否有权读取/写入对象 B。
现在有没有办法在 ZODB 或第三方解决方案中解决此类问题?或者有没有办法以这种方式扩展 ZEO?