访问控制

存储引擎有两个控制对象访问的功能。对象所有权和访问权限。

对象所有权 #

每个存储对象创建时都有一个所有者。所有者可以是创建对象的用户、系统所有者,也可以是使用代码运行库创建对象时指定的所有者。

从代码运行库写入对象时,除非明确设置,否则将系统用户视为所有者。默认将从客户端写入存储对象的用户设置为所有者。

系统所拥有的对象由系统用户创建,在服务器中以 nil UUID (00000000-0000-0000-0000-000000000000) 表示。系统所拥有的对象必须具有公开读取访问权限,客户端才能获取它。

这些代码示例显示如何检索系统所拥有的对象(标记为公开读取)。

您也可以使用代码运行库获取对象。代码运行库不受访问权限的相关标准规则的限制,因为服务器将其作为权威代码运行。

对象权限 #

对象有权限,在写入或更新对象时,为此对象的所有者执行这些权限。

  • ReadPermission 可以为 Public Read (2)、Owner Read (1) 或 No Read (0)。
  • WritePermission 可以为 Owner Write (1) 或 No Write (0)。

当通过代码运行库与存储引擎交互时,这些权限将被忽略,因为服务器是权威的,始终可以读取/写入对象。因此,No Read / No Write 权限意味着没有客户端可以读取/写入此对象。

只有作为所有者的用户才能访问或修改具有 Owner ReadOwner Write 权限的对象。其他客户端不能访问此对象。

Public Read 意味着任何用户均可读取该对象。这对于用户需要与其他用户分享其游戏状态或组成部分的游戏玩法很实用。例如,有些具有自己的 "Army" 对象的用户想要互相战斗。每个用户都可以写入自己的公开读取对象,其他用户也可以读取该对象,以便在其他用户的设备上呈现该对象。

在从客户端修改对象时,对象的默认权限设置为 Owner ReadOwner Write。 在从运行库修改对象时,对象的默认权限设置为 No ReadNo Write。 在列出对象时,将仅返回具有合适权限的对象。

您可以从代码运行库存储具有自定义权限的对象。

Related Pages