注:
此功能仅适用于企业级地理数据库,而不适用于数据库。
您可以配置要素服务以记录有关谁创建了每个要素的信息。 您还可以限制人们访问他们不拥有的要素。 这称为基于所有权的访问控制。
要使用基于所有权的访问控制,需要指定数据集中的一个字段保留创建者名字。 然后修改编辑器追踪设置,将其指定为创建者字段。 有关此过程的步骤,请参阅要素服务的编辑者追踪。
当发布服务并选中要素访问功能时,还要选中属性在要素上启用基于所有权的访问控制。 然后,您可以选择其他用户所创建要素上允许的操作(查询、更新和删除)以指定非创建者可以执行的操作。 创建者通常可以执行服务上允许的所有操作。
请记住,如果您取消选中查询,登录用户将只能看到他们创建的要素。 相反,如果选中查询而未选中更新和删除,则用户可以查询但对其他用户拥有的要素具有只读访问权限。
基于所有权的访问控制仅在服务可以获取有关谁在创建要素并尝试访问它们的信息时才有效。 在客户端应用程序中,开发人员必须要求用户输入 ArcGIS Server 凭据。 然后,开发人员使用此信息从 ArcGIS Server 获取令牌。 发出请求时,应将包含用户信息的加密令牌传递给要素服务。
当有人从匿名请求创建要素时(意味着请求不包含用户信息),创建者字段留空,任何人都可以访问该要素。
注:
匿名用户通过要素服务所做的编辑在地理数据库中记录为 Esri_Anonymous;但是,对于使用要素服务的客户端,这些值将显示为空字符串。 当您通过 REST 服务目录查询要素服务以查找匿名用户创建的要素时,必须指定 Esri_Anonymous。 例如,如果要素图层包含名为 created_by 的创建者字段,请在 Where 字段中键入 created_by='Esri_Anonymous'。
在进行离线编辑的地图中使用要素服务时,离线使用地图的人员的用户名用于追踪编辑,并基于此用户执行访问控制。 请注意,ArcGIS Server 管理员不会强制执行基于所有权的访问控制;管理员拥有完全权限。
如果服务中的某些数据集没有指定创建者字段,则不会对这些数据集执行基于所有权的访问控制。 如果您已选中复选框以启用基于所有权的访问控制并且未指定创建者字段,则在分析要发布的地图时可能会看到警告。 没有创建者字段的图层和表使用设置为服务级别的权限规则,如要素服务的编辑者权限中所述。
Web 编辑者
当设置基于所有权的访问控制时,您可以选择指定用户领域。 例如,如果用户领域设置为 myserver.com,并且用户 Bob 通过服务连接并插入要素,则创建者设置为 Bob@myserver.com。
基于所有权的访问控制规则对通过服务执行编辑的非管理 Web 编辑器有效。
提示和最佳做法
还需要注意的是,基于所有权的访问控制选项仅限于在服务级别允许所有用户进行的操作。 例如,如果未选中服务级别的更新和删除操作,则对于基于所有权的访问控制设置也未选中更新和删除操作。
发布服务时,建议您保持创建者字段对所有图层和表可见。 这允许客户知道哪个用户创建了给定的要素。 他们可以使用此信息来阻止用户尝试编辑他们无权编辑的要素。 如果创建者字段被隐藏,使用要素服务的客户端将不知道哪个用户创建了给定要素。 如果客户端尝试编辑它没有权限的要素,将返回错误。
注意编辑者追踪和基于所有权的访问控制之间的区别非常重要。 如果在数据集级别为图层设置了编辑者追踪,则无论是否存在基于所有权的访问规则,要素服务都会对编辑进行追踪。 但是,需要数据集级别的编辑者追踪才能设置基于所有权的访问规则。
当未经身份验证的用户进行编辑时,创建者或编辑者字段值留空。 如果启用了基于所有权的访问控制,则任何用户都可以编辑要素。 如果启用了基于所有权的访问控制,并且创建者为 NULL,则要素或记录为只读;没有人可以编辑要素。 服务作者可以配置他们的数据,以便他们希望只读的要素具有 NULL 作为创建者。