0

我一直在研究使用 ZODB 作为多人视频游戏的持久层。我非常喜欢它与任意面向对象数据结构的无缝集成。但是,我遇到了一个问题,我不知道 ZODB 是否可以为我解决这个问题。

显然,可以使用ClientStorageZEO 访问用于持久性的远程数据存储。虽然这在受信任的本地网络中很好,但如果没有在开放网络中适当的授权和身份验证,就无法做到这一点。

所以我想知道,是否有机会用 ZODB 实现以下概念:

在服务器端,我希望运行一个 ZEO 服务器以及一个游戏世界的模拟,它可以作为 ZEO 服务器上的完全授权客户端运行(或使用与 ZEO 服务器相同的文件存储)。

在客户端,我需要对 ZEO 服务器进行非常有限的读/写访问,以便客户端只能查看其用户应该知道的信息(例如他们角色的周围区域)并且只能修改相关信息到他们的角色可以执行的动作。

服务器必须使用某种细粒度的授权方案来施加这些限制。所以我需要能够告诉服务器用户 A 是否有权读取/写入对象 B。

现在有没有办法在 ZODB 或第三方解决方案中解决此类问题?或者有没有办法以这种方式扩展 ZEO?

4

1 回答 1

1

不,ZEO 从未设计用于此类用途。

它旨在跨多个进程扩展 ZODB 访问,将身份验证和授权留给数据之上的应用程序。

无论如何,我不会将 ZEO 用于本地网络之外的任何东西。使用不同的协议来处理游戏客户端和游戏服务器之间的通信,仅保留 ZODB 服务器端。

于 2013-09-18T23:22:59.517 回答