我一直在研究如何使用ZODB作为多人游戏的持久性层。我非常喜欢它与任意的面向对象的数据结构无缝集成。然而,我在一个问题上步履蹒跚,我不知道ZODB是否能为我解决这个问题。
显然,可以使用来自ZEO的ClientStorage来访问用于持久性的远程数据存储。虽然这在可信的本地网络中是很棒的,但是在开放的网络中,如果没有适当的授权和身份验证,就无法做到这一点。
因此,我想知道,是否有机会在ZODB中实现以下概念:
在服务器端,我想让一个ZEO服务器运行,再加上一个模拟游戏世界,这个游戏世界可能在ZEO服务器上作为一个完全授权的客户机运行(或者使用与ZEO服务器相同的文件存储)。
在客户端,我需要对ZEO服务器进行非常有限的读/写访问,这样客户端只能查看用户应该知道的信息(例如,其字符的周围区域),并且只能修改与其字符可以执行的操作相关的信息。
这些限制必须由服务器使用某种细粒度授权方案来实施。因此,我需要能够告诉服务器,用户A是否有读写对象B的权限。
现在有办法在ZODB或第三方解决这类问题吗?还是有办法以这种方式扩展ZEO?
发布于 2013-09-18 23:22:59
不,ZEO从来就不是为这样的用途而设计的。
它旨在扩展ZODB跨多个进程的访问,将身份验证和授权留给应用程序在数据之上。
无论如何,我不会将ZEO用于本地网络之外的任何事情。使用不同的协议来处理游戏客户端和游戏服务器之间的通信,只保留ZODB服务器端。
https://stackoverflow.com/questions/18872148
复制相似问题